依赖类型及函数约束规范
的代码静态类型分析工具
Dialyzer是Erlang的代码静态类型分析工具,可以用来检查一些编译器检查不出来,但是运行会报错的代码,比如被调用的函数不存在或者未导出…
Dialyzer可以检查.beam
文件,也可以检查Erlang源文件,但是检查.beam
文件更快。
Dialyzer的用法很简单,只有三步:建立PLT文件,编译代码,运行检查。
本节只介绍Dialyzer的基础用法,关于Dialyzer的更多内容参见dialyzer --help
命令或者Erlang官方文档
建立PLT文件
PLT文件是Dialyzer使用的代码规则记录,或者说是索引,需要把几个常用的Erlang系统库添加到PLT文件中就可以了
首先要确保Erlang已经被正确安装,然后Dialyzer对Windows的CMD不是很友好,Windows下可以使用MINGW64终端,另外Dialyzer默认生成PLT文件的位置是在$HOME
目录下,确定$HOME
环境变量已被正确设置
建立PLT文件的命令是:dialyzer --build_plt --apps erts kernel stdlib
这里只添加了kernel
stdlib
erts
三个标准库,如果发现已经建立的PLT文件中漏了某些库,可以使用--add_to_plt
添加dialyzer --add_to_plt --apps ssl eunit
编译代码
编译.beam
文件时要加上debug_info参数
运行检查
进入.beam
文件所在的目录 e.g.dialyzer .
或者检查某个.beam
文件 e.g.dialyzer "filename.beam"
可以将检查结果指定写入某个文件 -o
参数 e.g.dialyzer . -o ../log/dialyzer_result.log
1 | # 在命令行中Dialyzer运行检查表达式,返回值有3种状态 |