一、Luacheck介绍
Luacheck是lua的静态代码分析工具,详细了解可参考:https://github.com/mpeterv/luacheck
luacheck是使用比较广泛的代码分析工具,在各种插件中都可以集成luacheck,比如vscode中的luapanda插件也是用了luacheck,使用了luapanda以后,出现黄色下滑曲线的地方大家要注意一下,可能因此就无法提交了;反之,如果无法提交,优先检查有黄色下划线警告的地方,而且提交失败也会给出相应的日志;
二、安装过程
1.下载Luacheck
打开https://github.com/mpeterv/luacheck#installation,我们直接下载windows的.exe文件
将luacheck.exe放置到一个文件夹下,然后配置相应的环境变量,最后我们在命令内输入luacheck,显示相关内容即表示配置成功;
2.添加luacheck的配置文件,
在文件管理器的地址输入框内输入%LOCALAPPDATA%,然后回车;
然后进入如下目录,在该目录下新建文件夹Luacheck,然后新建一个.luacheckrc放置到Luacheck文件夹下
三、luacheck的配置
下面给出官方的配置文档,这里给出了各种warning和error的code码,可以在配置中直接使用这些编号。
https://luacheck.readthedocs.io/en/stable/warnings.html
这里是配置文件的一些具体配置选项
https://luacheck.readthedocs.io/en/stable/config.html
下面给出一个示例:
-- 每行最大长度,默认 120
max_line_length = false
unused = true
global = true
unused_args = false
ignore = {
'212',
'511',
}
globals = {
'table',
'string',
}
四、钩子的设置
在hook文件夹下的pre-commit最后加上以下内容,它会在提交时检查修改的lua文件,并进行check;
我们先拿到所有的修改,然后检测所有后缀为lua的文件;
git hook都是用shell语言写的,如果不清楚,可以去了解一下shell;
for file in `git diff --cached --name-only $against`; do
if [ "${file##*.}" == "lua" ]; then
luacheck $file
fi
done
ret="$?"
if [ "$ret" != 0 ]; then
exit "$ret"
fi
上述方式有一个漏洞:如果检测的一堆lua文件,前面的文件出错,后面的文件检测通过,那么也可以被commit;目前,我没有办法拼接所有的错误信息,因此在检测的for循环中每次loop都会做一次判断,也就是一旦遇到错误即停止。
五、注意事项
如果使用了sourcetree等工具,需要重启软件才能生效,否则找不到luacheck命令;
如果应用到项目中,可能要为其它非程序同学提供一些便捷方式,或者要将钩子文件和配置文件等纳入到版控之中,参考:使用批处理为git hook建立软链接,可以解决在项目中的实际应用问题;
六、扩展
虽然我们可以自定义luacheck的配置,但是可读性以及易用性都不够好,uwa提供了一个可视化的配置,而且是免费的,可以参考:本地资源检测支持Lua检测!