1.透析器 | 1. Dialyzer
1透析器
1.1游戏攻略
范围
Dialyzer是一款静态分析工具,用于识别单个Erlang模块或整个(一套)应用程序中的软件差异,例如明确的类型错误,因编程错误而死机或无法访问的代码以及不必要的测试。
透析器可以从命令行,Erlang和GUI中调用。
先决条件
假定读者熟悉Erlang编程语言。
1.2持久查找表
透析器将分析结果存储在持久查询表(PLT)中。PLT可以作为以后分析的起点。建议您使用您正在使用的Erlang / OTP应用程序构建PLT,但也包括您经常使用的自己的应用程序。
PLT是使用--build_plt
Dialyzer的选项构建的。以下命令为Erlang / OTP构建推荐的最小PLT:
dialyzer --build_plt --apps erts kernel stdlib mnesia
透析器会查看是否有环境变量调用DIALYZER_PLT
并将PLT放置在此位置。如果没有设置这样的变量,Dialyzer将PLT放在$HOME/.dialyzer_plt
。展示位置也可以使用选项--plt
或--output_plt
。
信息可以添加到现有的PLT使用选项--add_to_plt
。如果您还想在PLT中包含Erlang编译器并将其放入新的PLT中,请使用以下命令:
dialyzer --add_to_plt --apps compiler --output_plt my.plt
然后,您可以将您最喜爱的应用程序my_app添加到新的PLT中:
dialyzer --add_to_plt --plt my.plt -r my_app/ebin
但是你意识到在这个Erlang编译器中是没有必要的:
dialyzer --remove_from_plt --plt my.plt --apps compiler
稍后,当您修复应用程序my_app中的错误时,您需要更新PLT,以便在下次运行Dialyzer时变得新鲜。在这种情况下,运行以下命令:
dialyzer --check_plt --plt my.plt
透析器然后重新分析已更改的文件和依赖这些文件的文件。请注意,下次使用此PLT运行Dialyzer时,会自动执行此一致性检查。选项--check_plt
仅用于这样做,而不进行任何其他分析。
若要获取有关PLT的信息,请使用以下选项:
dialyzer --plt_info
要指定哪个PLT,请使用选项--plt
。
要将输出打印到文件,请使用选项--output_file
。
请注意,在操作PLT时,不会发出警告。要在PLT(重新)分析期间打开警告,请使用选项--get_warnings
。
1.3使用指挥线的透析器
Dialyzer有一个用于自动化使用的命令行版本。看dialyzer(3)
。
1.4使用Erlang的透析器
透析器也可以直接从Erlang使用。看dialyzer(3)
。
1.5使用GUI中的透析器
选择应用程序或模块
该文件
窗口显示当前目录的列表。点击你想要添加的目录/模块,或者在条目中输入正确的路径。
标记您想分析差异的目录/模块,然后单击添加
。您可以直接添加
.beam
和.erl
文件,或者添加
包含这些类型文件的目录。请注意,您只允许添加
可在当前的操作模式进行分析的文件类型(见下文),而且你不能混用.beam
和.erl
文件。
分析模式
透析器有两种分析模式:“字节代码”和“源代码”。它们由分析选项
下的主窗口顶部中间部分的按钮控制。
控制透析器报告的差异
在“ 警告”
下拉菜单中,有一些按钮可控制在“ 警告”
窗口中向用户报告哪些差异。通过点击这些按钮,您可以启用/禁用整组警告。有关警告类别的信息可在帮助
菜单下的“警告”
项目中找到(位于最右上角)。
如果使用内联编译模块,则可能会发出虚假警告。在选项
菜单中,您可以选择在分析字节码时忽略内嵌编译的模块。从源代码开始时,这不是问题,因为内联是由Dialyzer明确关闭的。该选项
使Dialyzer禁止内嵌编译模块发出的所有警告,因为Dialyzer目前没有办法找到通过内联生成代码的哪些部分。
运行分析
一旦你选择了你想分析的模块或目录,点击运行
按钮开始分析。如果您出于某种原因想要在运行
时停止
分析,请单击停止
按钮。
来自分析的信息显示在日志
窗口和警告
窗口中。
包括目录和宏定义
当从源代码分析,您可能必须与列表供应透析器包括目录和宏定义(你可以用做erlc
标志-I
和-D
)。这可以通过从命令行启动带有这些标志的Dialyzer完成,如下所示:
dialyzer -I my_includes -DDEBUG -Dvsn=42 -I one_more_dir
或者使用“ 选项”
菜单中的子菜单“ 管理宏定义”
或“ 管理包含目录”
来明确添加这些内容。
在“日志和警告”窗口中保存信息
“ 文件”
菜单包含用于保存“ 日志”
窗口和“ 警告”
窗口内容的选项。只需选择选项并输入文件以保存内容。
还有按钮可以清除每个窗口的内容。
检验解析函数的推断类型
透析器将分析的功能的信息存储在持久查询表(PLT)中,请参见部分The Persistent Lookup Table
。
分析后,您可以检查这些信息。在PLT
菜单中,您可以选择搜索PLT
或检查整个PLT
的内容。信息以EDoc
格式呈现。
1.6次反馈和错误报告
我们非常欢迎用户反馈 - 即使是希望列表!如果您发现任何奇怪的事情,特别是如果Dialyzer报告任何误报为误报,请发送描述症状的错误报告以及如何重现它们。