gpt4 book ai didi

Erlang:透析器对于一个大项目来说非常慢

转载 作者:行者123 更新时间:2023-12-01 02:32:58 26 4
gpt4 key购买 nike

Scalaris key-value store是一个包含约 100 个模块的大型 Erlang 项目。我正在这个项目中实现一个新模块,并且对透析器对项目进行一次完整检查需要多长时间感到震惊。运行 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 个文件。有没有更好的方法来加速透析器,假设在后续运行之间只有一个模块会发生变化?

最佳答案

如果其余模块在更改模块中没有调用,那么您可以将它们添加到您的 PLT 中,并且不会每次都检查它们。但是,如果他们确实有调用,那么如果您更改更改模块中的代码,则无法确保这些调用的结果相同。

dialyzer --add_to_plt <unchanged modules>

如果你有一台多核机器,你可能还想使用 Erlang R15B02(在我写这篇文章的时候还没有发布,但是可以在 https://github.com/erlang/otp 的 'maint' 分支上构建),它有一个并行版本的 Dialyzer .

关于Erlang:透析器对于一个大项目来说非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com