5

Scalaris Key-Valueストアは、最大100個のモジュールを備えた大きなErlangプロジェクトです。私はこのプロジェクト内に新しいモジュールを実装していますが、ダイアライザーがプロジェクトの完全なチェックを1回実行するのにかかる時間に驚いています。ここでの私のマシンでの実行にmake dialyzerは約200秒かかります。これは、変更を実装する際の頻繁なテストには耐えられません。

make dialyzer次のコマンドを実行して、ダイアライザーを起動します。

/usr/lib/erlang/bin/dialyzer -Dtid_not_builtin -Dwith_export_type_support  \
        -DNO_FILE_SENDFILE -Dhave_cthooks_support -Dhave_callback_support  \
        -Werror_handling -Wrace_conditions -Wunmatched_returns -I include/ \
        -I contrib/yaws/include/ -I contrib/log4erl/include/ \
        --src -c src src/*/ test/unittest_helper.erl test/tester*.erl \
                          test/mockup*.erl test/erl_id_trans.erl \
                          test/measure_util.erl test/scalaris_cth.erl \
        --no_native

モジュールに必要なファイルのみをのパラメータリストに含めることができるはずですが--src、そのリストはおそらくかなり大きく、指定された100個のファイルを90個含めることになります。高速化するためのより良い方法はありますか後続の実行間で1つのモジュールのみが変更されることを想定したダイアライザー?

4

1 に答える 1

4

残りのモジュールに変更モジュール内の呼び出しがない場合は、それらをPLTに追加でき、毎回チェックされるわけではありません。ただし、呼び出しがある場合は、変更モジュールのコードを変更しても、これらの呼び出しの結果が同じになるようにする方法はありません。

dialyzer --add_to_plt <unchanged modules>

マルチコアマシンを使用している場合は、Erlang R15B02を使用することもできます(これを書いている時点ではリリースされていませんが、https: //github.com/erlang/otpの「maint」ブランチでビルドできます) 。 、Dialyzerの並列バージョンがあります。

于 2012-08-15T12:21:00.247 に答える