我可以告诉透析师忽略一些模块吗?



我正在使用

构建PLT
dialyzer  --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时将其用作输入。反对项目。

相关内容

  • 没有找到相关文章

最新更新