我正在使用
构建PLTdialyzer --output_plt lib.plt --build_plt --apps stdlib kernel mnesia ssl public_key crypto erts asn1 inets sasl odbc
它在我不关心的模块中吐出一些关于未知函数的错误。例如:
Compiling some key modules to native code... done in 1m10.81s
Creating PLT lib.plt ...
Unknown functions:
compile:file/2
compile:forms/2
compile:noenv_forms/2
我可以告诉透析器忽略这些吗?我真的应该关心他们吗?
答案 0 :(得分:4)
要忽略您不想分析的特定功能的警告,可以在模块中添加:
-dialyzer({nowarn_function, f/0}).
或者这样可以避免模块中的特定警告:
-dialyzer(no_improper_lists).
答案 1 :(得分:2)
您无需关心这些警告。它只是意味着透析器将无法检查调用这些函数的参数类型,因此如果这些函数包含在PLT中,它可能找不到它可以找到的一些差异。
要获得更完整的分析,请将compiler
添加到您正在构建到PLT中的应用列表中。
答案 2 :(得分:2)
作为这个问题的后续行动,我一直在使用rebar3,就我而言,它的rebar3 dialyzer
命令是正确的。 (也就是说,它显示了由我的代码引起的所有警告,并且没有显示不是由我的代码引起的警告。)我认为它的工作原理是为系统模块构建PLT,然后在运行透析器时将其用作输入反对该项目。