dialyxir mix任务创建PLT退出而没有错误或创建表

时间:2016-10-04 14:24:20

标签: elixir mix dialyzer

我正在尝试使用dialyxir通过它提供的混合任务对我的项目进行透析器分析。

我已将其添加到我的依赖项中,并按照自述文件进行编译。

当我运行mix dialyxir.plt时,它报告没有错误,但在没有创建表的情况下退出。

$ mix dialyzer.plt
Starting PLT Core Build ... this will take awhile
dialyzer --build_plt --output_plt /home/vagrant/.dialyxir_core_19_1.3.2.plt --apps erts kernel stdlib crypto public_key -r /usr/local/lib/elixir/bin/../lib/elixir/../eex/ebin /usr/local/lib/elixir/bin/../lib/elixir/../elixir/ebin /usr/local/lib/elixir/bin/../lib/elixir/../ex_unit/ebin /usr/local/lib/elixir/bin/../lib/elixir/../iex/ebin /usr/local/lib/elixir/bin/../lib/elixir/../logger/ebin /usr/local/lib/elixir/bin/../lib/elixir/../mix/ebin
Creating PLT /home/vagrant/.dialyxir_core_19_1.3.2.plt ...

# later

$ ll /home/vagrant
# No file called /home/vagrant/.dialyxir_core_19_1.3.2.plt

# running the mix task errors as expected with no plt

$ mix dialyzer
dialyzer --no_check_plt --plt /home/vagrant/.dialyxir_core_19_1.3.2.plt -Wunmatched_returns -Werror_handling -Wrace_conditions -Wunderspecs /vagrant/_build/dev/lib/ace/ebin

dialyzer: No such file, directory or application: "/home/vagrant/.dialyxir_core_19_1.3.2.plt"

问题是如何调试这个?

2 个答案:

答案 0 :(得分:2)

与您在评论中提到的一样,运行dialyzer时的完整错误消息直接包含文本Killed。这是Linux的内存不足杀手,因为VM只有大约489MiB的RAM,因此使用了太多资源(很可能是RAM /交换)。 dialyzer的PLT创建非常占用CPU /内存,所以增加RAM(比如说1或2GB)就可以解决这个问题。

答案 1 :(得分:1)

mix dialyzer --plt

命令行选项mix dialyxir.pltdialyxir 0.4.3开始返回错误。 Dot语法被上面添加的flag替换。

<强>参考文献: