Fl4m3Ph03n1x
Dialyzer not compiling correctly
Background
I am trying dialyxir to find out if it is worth it, however I have a bunch of errors on the compile phase and I want to fix them.
What did you do?
Created a pet project to try out dialyzer with dialyxir.
mix new dialzyer_projectcd dialyzer_project- Install
dialyxirglobally - Added the dialyxir dependency
mix dialyzer
After this, I see a ton of red messages on my screen:
Finding suitable PLTs
Checking PLT...
[:compiler, :elixir, :kernel, :logger, :stdlib]
Looking up modules in dialyxir_erlang-21.1_elixir-1.7.3_deps-dev.plt
Looking up modules in dialyxir_erlang-21.1_elixir-1.7.3.plt
Finding applications for dialyxir_erlang-21.1_elixir-1.7.3.plt
Finding modules for dialyxir_erlang-21.1_elixir-1.7.3.plt
Checking 185 modules in dialyxir_erlang-21.1_elixir-1.7.3.plt
Adding 230 modules to dialyxir_erlang-21.1_elixir-1.7.3.plt
:dialyzer.run error: Analysis failed with error:
Could not scan the following file(s):
Could not get Core Erlang code for: /home/fl4m3/.asdf/installs/elixir/1.7.3/lib/elixir/ebin/elixir_tokenizer.beam
Recompile with +debug_info or analyze starting from source code Could not get Core Erlang code for: /home/fl4m3/.asdf/installs/elixir/1.7.3/lib/elixir/ebin/elixir_parser.beam
Recompile with +debug_info or analyze starting from source code Could not get Core Erlang code for: /home/fl4m3/.asdf/installs/elixir/1.7.3/lib/elixir/ebin/elixir_utils.beam
...
Seems that every possible Erlang package has this issue.
But astonishingly enough, the command still analyses the project and still shows errors. I have installed erlang and elixir using asdf.
Question
How can I fix the compile errors?
Marked As Solved
Fl4m3Ph03n1x
Fixed the issue. Turns out I had a lingering version of dialyxir isntalled globally with asdf elixir 1.7.3-otp-21 . I had to go to ~/.asdf/installs/elixir/1.7.3-otp-21/.mix/archives and manually delete the dialyxir folder.
Once I did that, everything worked out perfectly. So as a cautionary tale of advise for future readers, never install dialyxr locally and globally.
If you have dialyxir installed globally, make sure none of your projects has a local reference to it, or you will be in for a world of pain.
Special thanks to @NobbZ for helping out with the Git issue.
Also Liked
jeremyjh
You need to asdf local elixir 1.7.3-otp-21.
That will get you the Elixir that is precompiled with the correct version of OTP.
NobbZ
Please try again with master, if the error remains please file a bug report at Issues · jeremyjh/dialyxir · GitHub and use one of the older RCs until the issue has been resolved and a new release (candidate) is available.
slashdotdash
Thanks for the tip @jeremyjh.
I’ve been struggling with Dialyzer usage and didn’t realise it was because I needed to install the appropriate Elixir/OTP version when using asdf (as below).
asdf install erlang 21.1.1
asdf install elixir 1.7.4-otp-21
asdf global erlang 21.1.1
asdf global elixir 1.7.4-otp-21








