2014-01-20 38 views
2

我建設使用我可以告訴Dialyzer忽略一些模塊嗎?

dialyzer --output_plt lib.plt --build_plt --apps stdlib kernel mnesia ssl public_key crypto erts asn1 inets sasl odbc 

它吐出來的關於未知的功能我不關心模塊的一些誤差的PLT。例如:

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忽略這些嗎?我真的應該關心他們嗎?

回答

2

作爲這個問題的一個後續,我一直在使用rebar3和它的rebar3 dialyzer命令就我而言是正確的事情。 (也就是說,它顯示了所有由我的代碼引起的警告,並沒有顯示不是由我的代碼引起的警告。)我認爲它可以通過爲系統模塊構建PLT,然後在運行透析器時將其用作輸入反對該項目。

+0

即使我沒有像OP一樣的問題,這個答案對我很有幫助 – Tommy

2

您不需要關心這些警告。這只是意味着透析器無法檢查這些函數調用中的參數類型,因此它可能找不到它們能夠找到這些函數是否包含在PLT中的一些差異。

要獲得更完整的分析,請將compiler添加到要構建到PLT中的應用程序列表中。

+1

我已經將'compiler'放入了列表中,但是我添加的列表中有更多未知的函數。我到了它抱怨我的非GUI代碼缺少'wx'的地方,然後我來到了這裏。 另外,我關於忽略它們的問題是因爲我*想*知道我是否忽略了重要的模塊。但我在那裏發生了很多事,我不知道。 –

1

要忽略特定功能的警告,你不想來分析您可以在模塊中添加此:

-dialyzer({nowarn_function, f/0}). 

或者是爲了避免你的模塊在一個特定的警告:

-dialyzer(no_improper_lists). 

Full info:http://erlang.org/doc/man/dialyzer.html#suppression

相關問題