更新: | 2012-12-17 |
---|---|
バージョン: | 0.0.1 |
作者: | @voluntas |
URL: | http://voluntas.github.com/ |
URL: | http://www.erlang.org/doc/man/dialyzer.html |
---|
Dialyzer とは Erlang/OTP に標準で含まれる静的型解析ツールです。
使うまでに準備がいることや、実際どんなことをやってくれるのかがわかりにくいため、まとめてみました。
コードが無いとわかりにくいのでサンプルコードをまとめました
https://github.com/voluntas/snowflake/tree/feature/dialyzer
サンプルコードの Makefile を一部抜粋してます
依存ライブラリが不要な場合もあるため with-deps とそうじゃないものを用意してみました。
# メインのアプリケーション名を指定してください APP_NAME = snowflake # ベースとなる Erlang/OTP の PLT ファイルを生成します # ./dialyzer は自由に変更して頂いてかまいません # Erlang/OTP のバージョン毎に異なるファイルを作るのがベターだと思います dialyze-build-otp-plt: dialyzer --build_plt --output_plt ~/.dialyzer.plt \ --apps erts kernel stdlib sasl inets mnesia crypto \ public_key snmp reltool ssl # 依存ライブラリの PLT ファイルを作りましょう dialyze-build-deps-plt: dialyzer --build_plt --output_plt .$(APP_NAME)_deps.plt --apps deps/* # 依存ライブラリを含んで静的解析を行います dialyze-with-deps: dialyzer --check_plt --plt .$(APP_NAME)_deps.plt -c . dialyzer --plts ~/.dialyzer.plt .$(APP_NAME)_deps.plt --src src --no_native \ -Wunmatched_returns -Werror_handling -Wrace_conditions \ -Wunderspecs -Woverspecs # 依存ライブラリを含まないで静的解析を行います dialyze: dialyzer --plts ~/.dialyzer.plt --src src --no_native \ -Wunmatched_returns -Werror_handling -Wrace_conditions \ -Wunderspecs -Woverspecs
まずは Erlang/OTP コア部分の plt ファイルを生成する必要があります。 これにはとても時間がかかります、30 分程度を見ておいてください。
先ほどのサンプルであれば make dialyze-build-otp-plt と打てば良いです。
アプリケーションを追加したい場合は --apps に追加しましょう
Erlang/OTP のバージョン毎に用意したい場合は --output_plt の次の引数を変更しましょう
先ほどのサンプルであれば make dialyze-build-deps-plt と打てば良いです。
こちらはローカルに用意するので問題無いと思います
今回はこの解説を省きます。--src と --no_native を使ってソースコード解析をするようにしています。