2016-10-04 4 views
0

Я пытаюсь использовать dialyxir для запуска анализа диализатора в моем проекте с помощью задач микширования, которые он предоставляет.Задача dialyxir mix для создания PLT-выходов без ошибок или создания таблицы

Я добавил его к моим зависимостям и скомпилирован в соответствии с README.

Когда я запускаю , он не сообщает об ошибке и не выходит из таблицы без создания таблицы.

$ 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" 

Вопрос в том, как отлаживать это?

+0

Что произойдет, если вы вручную запустить 'dialyzer' команду напечатанное в 3-й строке вашего сниппета? – Dogbert

+0

Он печатает 'Создание PLT /home/vagrant/.dialyxir_core_19_1.3.2.plt ... Killed', но никакой дополнительной информации –

+0

Я бы застраховал, что пользователь, с которым вы работаете, может писать в каталог/home/vagrant. Попробуйте что-то вроде 'touch/home/vagrant' –

ответ

2

Как вы упомянули в комментариях, полное сообщение об ошибке при запуске dialyzer напрямую включало текст Killed в конце. Это убийца Out-of-memory от Linux, убивающий процесс использования слишком большого количества ресурсов (скорее всего, RAM/swap), поскольку VM только имела ~ 489MiB ОЗУ. dialyzer PLT-создание довольно интенсивное CPU/память, поэтому увеличение объема оперативной памяти (скажем, 1 или 2 ГБ) должно исправить это.

1
mix dialyzer --plt 

командной строки Опция возвращает ошибку от dialyxir 0.4.3. Синтаксис Dot заменен флагом, добавленным выше.

Ссылки:

+0

'dialyxir' может быть [установлен глобально как архив] (https://github.com/jeremyjh/dialyxir#installation). – noobninja

+0

Thank's noobrinja. – rld