Erlang: dialyzer is dead slow for a big project

Viewed 1034

The Scalaris key-value store is a big Erlang project with ~100 modules. I am implementing a new module within this project and am struck by how long it takes for dialyzer to do one complete check of the project. A run of make dialyzer takes about 200s on my machine here, which is unbearable for frequent testing while implementing changes.

make dialyzer runs the following command to start 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

I guess that I should be able to only include the files needed for my module in the parameter list for --src, but that list is probably quite big and it comes down to including 90 files of the given 100. Is there a better way to speed up dialyzer with the assumption that only one module is going to change between the subsequent runs?

1 Answers
Related