Vs调用luacheck静态检查
(金庆的专栏 2017.3)
1. 安装luacheck
1. 下载 luacheck-0.19.0
2. 解压复制到 d:/tools/luacheck-0.19.0
3. 运行 install.lua <path>
d:\tools\luacheck-0.19.0>d:\tools\lua\lua53.exe install.lua d:\tools\luacheck
运行install.lua仅仅是复制文件,改写bin\luacheck.bat.
2. VS 添加外部工具调用
工具->外部工具->添加
标题:luacheck
命令:d:\tools\luacheck\luacheck.bat
参数:$(SolutionDir)src\*.lua
或者单个文件
参数:$(ItemPath)
选择“使用输出窗口”
3. 更改luacheck输出格式,可以双击定位到出错行。
luacheck输出格式如下:
Checking E:\server_oschina\scripts\cell\svc_test_cmd.lua 4 warnings
E:\server_oschina\scripts\cell\svc_test_cmd.lua:3:7: unused variable 'log'
E:\server_oschina\scripts\cell\svc_test_cmd.lua:14:5: line contains trailing whitespace
双击可以打开文件,但是定位在第1行。需要改为行号在括号内的格式:“cmd.lua(3):”
可以直接更改luacheck\format.lua, 也可以复制为 luacheck\format_vs.lua 更改。
- local res = ("%s:%d:%d"):format(file, location.line, location.column)
+ local res = ("%s(%d):%d"):format(file, location.line, location.column)
- return format
+ return formatters.plain
参数:$(SolutionDir)src\*.lua
参数:$(SolutionDir)src\*.lua --formatter luacheck.format_vs
现在输出为:
E:\server_oschina\scripts\cell\svc_test_cmd.lua(3):7: unused variable 'log'
E:\server_oschina\scripts\cell\svc_test_cmd.lua(14):5: line contains trailing whitespace
4. 如果安装了lfs, 则可以输入目录作为参数。
5. 添加配置 .luacheckrc
Windows下创建 .luacheckrc 需要输入文件名为 .luacheckrc., 即尾部加一点。
或者用 echo > .luacheckrc
创建在sln目录,然后设置外部工具luacheck调用的初始目录为 $(SolutionDir),这样就可以让配置生效。
示例:
exclude_files = {
"lualibs/**/*",
}
globals = {
}
read_globals = {
'c_log',
}