[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Common Lua (Logic/Style etc) Errors Detectable Through Static Analysis
- From: David Manura <dm.lua@...>
- Date: Wed, 16 Feb 2011 01:04:44 -0500
On Tue, Feb 15, 2011 at 9:31 AM, Jon Akhtar <akhtar@mindspring.com> wrote:
> [IntelliJ IDE inspections can] find common flaws in code and either flag them,
> or flag them and offer to fix them. [...]
> a,b,c = 1,2
> [...] I am looking for more, so I thought I would ask the list for some suggestions.[...]
On Tue, Feb 15, 2011 at 10:02 AM, Jon Akhtar <akhtar@mindspring.com> wrote:
> -- Function is last (cannot determine)
> a, b, c = 1, b()
A similar case is
local function ff(xx,yy)
if yy then return xx+yy, xx-yy else return xx end
end
local aa, bb, cc = ff(5)
Here, you could flag an argument count mismatch on the `ff` call,
although this can be a false positive if arguments are optional, as is
the case here. You may also infer that `cc` is `nil` (or actually
none) since all the return paths of `ff` return no more than two
values.
A lot of things can also be flagged via data flow analysis
(propagating values+types):
local xx = {}
local function ff() return xx + xx end
local yy = ff()
Here, `yy` can be inferred as never getting set to a value, due to
"attempt to perform arithmetic" error.
LuaInspect handles or at least knows about the above cases.