Previously dialyzer stored the project PLT in ./build/, which meant the
same PLT was used for all profiles. This could mean partial rebuilding
of a PLT when switching between profiles.
It is not convenient for everyone to handle unmatched_returns and
underspecs warnings. Extra default warnings are removed to match
dialyzer's behaviour.
When dialyzer_plt_warnings is false no warnings should be returned when
updating a PLT. Previously any callgraph warnings would be returned when
updating a PLT regardless of the get_warnings option.
code:lib_dir/1,2 can return archive directory for rebar escript archive
applications, rather than the application's directory in the project.
Add dependencies not listed in `applications` to `dialyzer_plt_apps`.
Adds a base plt per OTP version that is stored in $HOME/.rebar3/. The
base plt is copied to new projects that don't have a plt for the active
OTP version. Modules are added/removed to the project's copy based on
the project's .app files.
Try to automatically detect all application dependencies when `plt_apps`
is not included in `rebar.config`.
Note that this will not follow `runtime_dependencies` in OTP
applications. This can be resolved by adding any missing
`runtime_dependencies` to `applications` in the .app.src file or
including `plt_apps` in `rebar.config`.
* Only include `plt_apps` (defaults to deps) in a single PLT
* Update PLT when `plt_apps` (or deps) are changed or updated
* Print warnings for all dialyzer runs (not just `succ_typings`)