erlang的靜態分析dialyzer使用

比較隱藏的erlang代碼的bug,可以使用dialyzer分析找出。

環境:windows系統下的使用,erlang8.0

使用dialyzer工具前需要先構建plt

官方文檔:http://erlang.org/doc/man/dialyzer.html

一.  構建plt,包含了以下llib:erts, kernel, stdlib, ERL_TOP爲erlang的安裝目錄(我是F:/erlang/erl8.0/)。

進入到自定義plt所緩存的文件位置:我是放在F:/erlangtest/dialyzer/,執行以下cmd命令

dialyzer --build_plt -r ERL_TOP\lib\erts-8.0\ebin 

                               ERL_TOP\lib\kernel-5.0\ebin 

                               ERL_TOP\lib\stdlib-3.0\ebin

(多個lib之間用空格即可,具體的lib版本以自身版本爲主)

大概幾分鐘就完成;在F:/erlangtest/dialyzer/下就生成了一個 ~/.dialyzer_plt文件。

報錯處理:第一次運行可能報以下錯

解決方法:(推薦方法2。方法1則每次重新打開cmd,執行dialyzer命令,都需要set一下

方法1.

定義下HOME指定到緩存文件的位置,F:/erlangtest/dialyzer/

設置Home:set HOME=文件緩存位置(f:\erlangtest\dialyzer)

輸出查看:echo %HOME%

  

方法2.

新建新的系統變量:我的電腦-》屬性-》高級系統設置-》環境變量-》新建變量

再執行一下第一步的cmd命令,到這裏,plt構建就大功告成啦,接下來就可以使用。

補充: 增加lib應用,dialyzer --add_to_plt --plt  .dialyzer_plt -c ERL_TOP/lib/應用版本/ebin

         移除lib應用,dialyzer --remove_from_plt --plt .dialyzer_plt -c ERL_TOP/lib/應用版本/ebin

 

二.  dialyzer靜態分析常使用(注意如果是檢測beam文件,編譯時要debug_info模式,不然會獲取不了abstract code,分析不了)

1.檢測整個文件夾下包括子目錄:dialyzer --src -r 文件夾名

2.檢測單個文件 :dialyzer  -c 文件名.beam

3.引入文件並檢測文件夾下和子目錄下:dialyzer -I include --src -r 文件夾名   (其中inlucde就是文件名,文件可以是.erl或.beam) 

具體使用參數可看文檔

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章