Erlang的静态代码检查

Dialyzer是Erlang的静态代码检查程序, 可以发现函数调用时的类型错误之类的问题, 以及被调用的函数不存在或未导出的问题. 最实用的是在上传代码到SVN后, 检查是否漏传模块. 因为漏传的话, 编译不会报错, 但运行时会出undef错误, 从SVN上检出一份全新的代码, 用Dialyzer查一下, 漏的马上可以发现.

Dialyzer用法很简单, 只有三步: 建立PLT文件, 编译代码, 运行检查.

建立PLT文件

PLT文件是Dialyzer所用的代码规则的记录, 或者说是索引. 一般把代码所用到的几个常用的Erlang系统库加到PLT文件中就好了.

开始使用Dialyzer之前请先确定Erlang已正确安装, dialyzer.exe在系统搜索路径中.

写Dialyzer模块的人用的是Linux, 所以这东西对Windows不是特别友好, 它的PLT文件默认存放在HOME目录下, 而Windows一般是没有这个环境变量的, 所以Dialyzer一运行就报错. 因此首先要设置HOME变量, 指定为一个目录, 用以存放PLT文件.

建立PLT文件的命令是

    dialyzer --build_plt --apps erts kernel stdlib mnesia

其实 --build_plt 参数表示建立PLT文件, --app 后面写上代码中引用到的内置库即可.

这个命令运行时间比较长, 可能达到十几分钟, 请去喝杯咖啡慢慢等.

如果发现已经建立的PLT文件中漏了某些库, 可以使用 --add_to_plt …

more ...