lukeses

lukeses

Dialyzer returns warnings connected with dependencies

I’ve updated a version of Elixir in a project with multiple applications under umbrella project.

Elixir is updated from: 1.6.4 to 1.7.3
Erlang is updated from: 20.2 to 21.0.8 (tried also on 21.0.2)

After running mix dialyzer, There are pretty a lot of errors, we didn’t have earlier. As an example, I get following warnings, each duplicated few times:

lib/supervisor.ex:1:callback_info_missing
Callback info about the Supervisor behaviour is not available.

lib/phoenix/endpoint.ex:1:callback_info_missing
Callback info about the Plug behaviour is not available.

lib/gen_server.ex:1:callback_info_missing
Callback info about the GenServer behaviour is not available.

Our current setup of dialyzer is following:

  dialyzer: [
    plt_add_deps: :transitive,
    plt_add_apps: [:mix],
    remove_defaults: [:unknown],
    ignore_warnings: ".dialyzer/ignore-warnings",
    excluded_paths: [
      build_path() <> "/dev/lib/project_under_umbrella_1/ebin",
      build_path() <> "/dev/lib/project_under_umbrella_2/ebin"
    ]
  ],

We have only dialyzer setup in the root of the project. Such a setup is not defined under each of umbrella projects.

  • I’ve tried to change, also: plt_add_deps: true - list of warnings didn’t shorten.

Do you have any other idea, I can try to remove warnings generated by libraries, we use? I would like to prevent adding such warnings to ignore_warnings file.

Marked As Solved

NobbZ

NobbZ

As @amnu3387 suggests, this may be because of some changes with debug-symbols in the BEAM.

If your elixir version is compiled with an erlang/OTP version prior to 20, then your elixir version (and your deps) do only contain old style debug info.

Therefore please check your elixir version with elixir --version, also please make sure you have fully recompiled all of your dependencies in your project, by recursively deleting all _build and deps folders in the umbrella and then mix do deps.get, deps.build.

Also Liked

lukeses

lukeses

Thank you for giving a direction @amnu3387 @NobbZ how to resolve it.

I wasn’t aware of that during installation Elixir, it is possible to provide OTP version. I had an Elixir compiled with earlier OTP. After changing to OTP 21, I didn’t get errors coming from Elixir or libraries.

If any of you will have a similar problem and you use asdf (version manager), then remember about adding an OTP version used in compilation:

asdf install elixir 1.7.3-otp-21
amnu3387

amnu3387

I had a bunch of errors with dialyzer when using elixir 1.7.2 & erlang 21, and had to use elixir 1.7.2 BUT compiled with erlang > 21 (with asdf, version → 1.7.2-otp-21)

Where Next?

Popular in Questions Top

Tee
can someone please explain to me how Enum.reduce works with maps
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
JulienCorb
I am trying to implement my new.html.eex file to create new posts on my website. new.html.eex: &lt;h1&gt;Create Post&lt;/h1&gt; &lt;%= ...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" =&gt; #BSON.ObjectId&lt;58eb1a7a9ad169198c3dXXXX&gt;, "email" =&gt; ...
New

Other popular topics Top

skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30877 112
New
AngeloChecked
What learn first? Rust or Elixir Hi Elixir community! I’m here because i want learn a new language. I’m a junior developer and mainly i ...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
Qqwy
Update: How to use the Blogs &amp; Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 126479 1222
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement