使用Luacheck和git hook在git pre-commit时检查lua代码规范

本文详细介绍Lua静态代码分析工具Luacheck的安装、配置及Git钩子设置,帮助提升Lua代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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检测!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值