代码静态分析
主要可以做两点:
作为开发人员,在日常编码中,难免会犯一些低级错误,比如少个括号,少个逗号,使用了未定义变量等等,我们往往会使用编辑器的 lint 插件来检测此类错误。
对于我们 OpenResty 开发中,日常开发的都是 Lua 代码,所以我们可以使用 luacheck 这款静态代码检测工具来帮助我们检查,比较好的一点是这款工具对 做了一些支持,我们使用的 ngx.*
变量在开启了配置 --std ngx_lua
后即可被 luacheck 识别,而不会被认为是未定义的变量。
使用也很方便,只需要 luacheck filename or directory
即可。
检测结果如下:
当然你也可以指定一些参数来运行 luacheck,常见的有 std、ignore、globals 等,我们一般会将 作为必选项,用来识别 ngx_lua
的全局变量,具体的规则可以查看 。
一个 大概是这样子的:
luacheck 也可以集成进编辑器使用,支持的有 Vim,Sublime Text,Atom,Emacs,Brackets。基本主流的编辑器都有支持。具体可以看相应的 使用文档,这里就不做说明了。
这里特别说一下的是,我们在项目中使用了 git pre-commit hooks
来进行静态检查。在 git commit
时会检测本次提交修改和新增的代码,判断是否通过了 luacheck 的检测,未通过会给出提示并询问是否退出这次 commit。