LuaJIT-lint选件

LuaJIT-lint选件,lua,bytecode,luajit,Lua,Bytecode,Luajit,我一直在研究Lua的lint类util,并阅读了LuaInspect、LuaLint和MetaLlint。我使用的是LuaJIT-2.0.2,我的需求非常简单,我需要能够只检查MODNAME:function()类型的访问。除了MetaLint(需要MetaLua运行时)之外,其余的似乎都在进行字节码转储和解析,检查全局访问 因此,如果我想为我的源代码实现一个简单的实用程序,在类似的行中,我应该在luajit-b-l source.lua的输出中查找GGET和TGETS操作码,例如: 0019

我一直在研究
Lua的
lint
类util,并阅读了
LuaInspect
LuaLint
MetaLlint
。我使用的是
LuaJIT-2.0.2
,我的需求非常简单,我需要能够只检查
MODNAME:function()
类型的访问。除了
MetaLint
(需要
MetaLua
运行时)之外,其余的似乎都在进行字节码转储和解析,检查全局访问

因此,如果我想为我的源代码实现一个简单的实用程序,在类似的行中,我应该在
luajit-b-l source.lua
的输出中查找
GGET
TGETS
操作码,例如:

0019    GGET     4   1      ; "MODNAME"
0020    TGETS    4   4   8  ; "function"
是否有更好的替代方案/方法


谢谢。

你到底想做什么?也许您可以使用Lua调试库做一些事情,例如debug.sethook()。我想对代码进行静态检查,以确保只调用[我正在添加的]已知模块/函数。这将在
luaL\u loadfile
之后完成。调试钩子,AFAIK,是运行时的!好的,那么要么像您所展示的那样检查字节码,要么使用代码中可用的各种Lua解析器之一来检测。@catwell您指的是Lua源解析器,还是字节码列表解析器?我指的是源解析器。您可以从AST或一些中间表示中找到。