- 更新
2012-12-17
- バージョン
0.0.1
- 作者
@voluntas
- URL
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 を使ってソースコード解析をするようにしています。