|
|
||
|
One of the hallmarks of JetBrains (the maker of IntelliJ) is the notion of an intelligent semantically aware text editor. To honor this I have been creating what are called "inspections" which find common flaws in code and either flag them, or flag them and offer to fix them. ... I am looking for more, so I thought I would ask the list for some suggestions.
I'm not sure how common this is for others, but sometimes I define an object method which references the implicit "self" parameter in its body but then I forget to either 1. include "self" in the parameter list or 2. define the method using the object:method() notation. The end result is of course that "self" refers to a (probably nonexistent) global variable. This could/should be pretty easy to detect using static analysis?
- Peter Odding
--
PS. Some examples for inspections.lua:
local object = {}
-- self explicitly included in parameter list: OK
function object.goodmethod1(self) print(self) end
-- self implicitly included in parameter list: OK
function object:goodmethod2() print(self) end
-- self refers to a global, probably not what was intended!
function object.badmethod() print(self) end