代码静态分析

    主要可以做两点:

    作为开发人员,在日常编码中,难免会犯一些低级错误,比如少个括号,少个逗号,使用了未定义变量等等,我们往往会使用编辑器的 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。