Lua:有没有办法在运行前识别未定义的函数?

Lua:有没有办法在运行前识别未定义的函数?,lua,compilation,static-analysis,preprocessor,Lua,Compilation,Static Analysis,Preprocessor,有好几次,由于调用不存在的函数,我会遇到Lua运行时错误(有时是由于名称输入错误,有时是由于重新构造代码…) 所以,我想知道是否有一种方法可以让我在运行前识别那些对未定义函数的调用 我发现一些脚本可以识别未定义的全局变量,但它们似乎只在一个文件中工作(我的项目有几十个lua文件) 更新:下面是一个示例: b.lua local b = {} b.myTest = function() end return b local function myFunc() end local myModu

有好几次,由于调用不存在的函数,我会遇到Lua运行时错误(有时是由于名称输入错误,有时是由于重新构造代码…)

所以,我想知道是否有一种方法可以让我在运行前识别那些对未定义函数的调用

我发现一些脚本可以识别未定义的全局变量,但它们似乎只在一个文件中工作(我的项目有几十个lua文件)

更新:下面是一个示例:

b.lua

local b = {}

b.myTest = function()
end

return b
local function myFunc()
end
local myModule = require("b")


myFunc() -- works
myfunc() -- error

myModule.myTest() -- works
myModule.mytext() -- error
main.lua

local b = {}

b.myTest = function()
end

return b
local function myFunc()
end
local myModule = require("b")


myFunc() -- works
myfunc() -- error

myModule.myTest() -- works
myModule.mytext() -- error
因此,我想要一种在实际运行代码之前运行某种脚本/预处理器来识别这两个错误的方法(这会导致运行时错误)

更新2

@hjpotter92提到了ZeroBrane IDE,我看了一下。它依赖于luacheck进行实时静态分析,因此我在Sublime上安装了SublimeLineter luacheck,现在我可以在同一个文件上检测未定义的函数。不幸的是,它没有检测到在表或模块外部定义的那些


例如,在您的一个文件中,您定义了一个名为
func1()
,但在另一个文件中,您将该函数称为
func2()
,并且您正在寻找某种工具来自动搜索这种类型的打字错误?我添加了一个代码示例,说明了我在另一个文件中所指的函数。仅函数?那么拼写错误的变量名和表字段呢?您可以使用
luac
将文件编译为字节码,而无需执行任何操作。这将捕获任何语法错误。无法捕获诸如拼写错误的函数或变量名之类的语义错误(对于任何其他解释性语言,如Python,也是如此)。对于后者,您需要单元测试,这正是它们的目的。@Egor Skriptunoff,我主要对函数感兴趣,我认为这些函数比任何变量都更容易识别(在几种情况下,变量==nil应该是可以接受的,但调用nil函数不应该)。