[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: finding undefined globals
- From: Fabian Peña <fapenia@...>
- Date: Wed, 17 May 2006 15:16:08 -0300
This work are similar to lualint ?
http://lua-users.org/wiki/LuaLint
or specific for lua 5.1 ?
Luiz Henrique de Figueiredo wrote:
> Motivated by a thread in the chat room (#lua) last week, I wrote a quick
> hack for doing static analysis of Lua programs and flagging the use of
> undefined globals. See the attached script, globals.lua. Since this
> script performs static analysis based on the bytecode, it cannot find
> all uses of undefined globals. For a tool that does that at run time,
> see etc/strict.lua in the distribution. Enjoy.
> --lhf
>
>
> ------------------------------------------------------------------------
>
> -- find undefined global vars
> -- typical usage: luac -p -l *.lua | lua globals.lua
>
> local S={}
> local G={}
> local F
>
> while true do
> local s=io.read()
> if s==nil then break end
> local ok,_,f=string.find(s,"^[mf].-<(.-):%d+,%d+>")
> if ok then F=f end
> local ok,_,l,op,g=string.find(s,"%[%-?(%d*)%]%s*([GS])ETGLOBAL.-;%s+(.*)$")
> if ok then
> if op=="S" then S[g]=true else G[g]=F..":"..l end
> end
> end
>
> for k,v in next,G do
> if not S[k] and not _G[k] then
> io.write(k," may be undefined in ",v,"\n")
> end
> end