2016-10-04 1 views
0

J'essaie d'utiliser dialyxir pour exécuter l'analyse du dialyseur sur mon projet à travers les tâches de mixage qu'il fournit. Je l'ai ajouté à mes dépendances et compilé selon le README.tâche de mixage dialyxir pour créer des sorties PLT sans erreur ou créer une table

Lorsque j'exécute le , il ne signale aucune erreur et quitte pour autant sans créer la table.

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

La question est comment est-ce que je débogue ceci?

+0

Qu'est-ce qui se passe si vous exécutez manuellement la commande 'dialyzer' imprimée dans la 3ème ligne de votre extrait? – Dogbert

+0

Il imprime 'Création PLT /home/vagrant/.dialyxir_core_19_1.3.2.plt ... Killed' mais pas d'autres informations –

+0

Je m'assurerais que l'utilisateur que vous exécutez mix sous peut écrire dans le répertoire/home/vagagrant. Essayez quelque chose comme «touch/home/vagabond» –

Répondre

2

Comme vous l'avez mentionné dans les commentaires, le message d'erreur complet lors de l'exécution dialyzer directement inclus le texte Killed à la fin. C'est le tueur de mémoire insuffisante de Linux qui tue le processus pour utiliser trop de ressources (RAM/swap probablement) puisque la VM n'avait que ~ 489 Mo de RAM. La création PLT de dialyzer est assez gourmande en ressources processeur/mémoire, donc augmenter la RAM (disons 1 ou 2Go) devrait résoudre ce problème.