该Scalaris key-value存储是一个大二郎项目约100个模块。我正在这个项目中实施一个新模块,并且对透析器对项目进行一次完整检查需要多长时间感到震惊。make dialyzer在我的机器上运行大约需要 200 秒,这对于在实施更改时进行频繁测试是无法忍受的。
make dialyzer 运行以下命令启动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
Run Code Online (Sandbox Code Playgroud)
我想我应该只能在 的参数列表中包含我的模块所需的文件--src,但该列表可能非常大,归结为包含给定 100 个文件中的 90 个文件。有没有更好的方法来加速假设只有一个模块会在后续运行之间发生变化?
如果其余模块在更改模块内没有调用,那么您可以将它们添加到您的 PLT 中,并且不会每次都检查它们。但是,如果它们确实有调用,则在更改更改模块中的代码时,无法确保这些调用的结果相同。
dialyzer --add_to_plt <unchanged modules>
Run Code Online (Sandbox Code Playgroud)
如果您有一台多核机器,您可能还想使用 Erlang R15B02(在我撰写本文时尚未发布,但可用于在https://github.com/erlang/otp的“maint”分支上构建) ,它有一个并行版本的 Dialyzer。
| 归档时间: |
|
| 查看次数: |
970 次 |
| 最近记录: |