我正在使用
构建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
我可以告诉透里师忽略这些吗?我真的应该关心它们吗?
忽略您不想分析的特定功能的警告,可以在模块中添加它:
-dialyzer({nowarn_function, f/0}).
或以避免模块中的特定警告:
-dialyzer(no_improper_lists).
完整信息:http://erlang.org/doc/man/dialyzer.html#suppression
您不需要关心这些警告。这只是意味着透明师将无法在调用这些功能的呼叫中检查参数类型,因此可能找不到某些差异,如果这些功能包含在Plt。
中,它将能够找到能够找到的差异。要进行更完整的分析,请将compiler
添加到您要构建的应用程序列表中。
作为此问题的后续,我一直在使用rebar3,就我而言,它的 rebar3 dialyzer
命令是正确的。(也就是说,它显示了由我的代码引起的所有警告,并且没有显示由我的代码引起的警告。)我认为它可以通过为系统模块构建PLT,然后在运行Diulyzer时将其用作输入。反对项目。