透析器可以使用哪个版本的 elixir-otp-erlang?
Which version of elixir-otp-erlang can we use with dialyzer?
背景
最新版本的 Elixir (1.7.X) 有 bug that prevents the usage of dialyzer 16.
现在,我知道一些以前的版本没有这个问题,但我不知道是哪些。
我试过的
我测试了以下版本:
1.7.2-otp-21
1.7.3-otp-21
1.7.4-otp-21
全部未能正常工作。
可以使用 MWE 重现错误:
问题
不受此错误影响的最新版本的 elixir-otp-erlang 是什么?
我写了一个脚本(使用官方 docker 图片)来测试所有 1.7
版本,但都失败了。
最近有效的版本似乎是 1.6.6
。
root@0697cad23f07:/data# mix dialyzer
Finding suitable PLTs
Checking PLT...
[:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
PLT is up to date!
Starting Dialyzer
[
check_plt: false,
init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
files_rec: ['/data/_build/dev/lib/myapp/ebin'],
warnings: [:unknown]
]
Total errors: 0, Skipped: 0
done in 0m2.83s
done (passed successfully)
我不确定你的其他设置是什么,但正如我之前提到的,对我来说它适用于以下设置:
$ mix dialyzer
Finding suitable PLTs
Checking PLT...
[:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
PLT is up to date!
Starting Dialyzer
[
check_plt: false,
init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
warnings: [:unknown]
]
Total errors: 70, Skipped: 0
done in 2m2.05s
雨伞mix.exs:
# ...
def project do
[
apps_path: "apps",
start_permanent: Mix.env() == :prod,
deps: deps(),
dialyzer: [plt_add_deps: :transitive],
aliases: aliases()
]
end
#....
defp deps do
[
{:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
{:benchee, "~> 0.11", only: :dev}
]
end
背景
最新版本的 Elixir (1.7.X) 有 bug that prevents the usage of dialyzer 16.
现在,我知道一些以前的版本没有这个问题,但我不知道是哪些。
我试过的
我测试了以下版本:
1.7.2-otp-21
1.7.3-otp-21
1.7.4-otp-21
全部未能正常工作。
可以使用 MWE 重现错误:
问题
不受此错误影响的最新版本的 elixir-otp-erlang 是什么?
我写了一个脚本(使用官方 docker 图片)来测试所有 1.7
版本,但都失败了。
最近有效的版本似乎是 1.6.6
。
root@0697cad23f07:/data# mix dialyzer
Finding suitable PLTs
Checking PLT...
[:accept, :compiler, :crypto, :elixir, :kernel, :logger, :mime, :plug, :plug_crypto, :prometheus, :prometheus_ex, :prometheus_plugs, :stdlib]
PLT is up to date!
Starting Dialyzer
[
check_plt: false,
init_plt: '/data/_build/dev/dialyxir_erlang-20.3.8.14_elixir-1.6.6_deps-dev.plt',
files_rec: ['/data/_build/dev/lib/myapp/ebin'],
warnings: [:unknown]
]
Total errors: 0, Skipped: 0
done in 0m2.83s
done (passed successfully)
我不确定你的其他设置是什么,但正如我之前提到的,对我来说它适用于以下设置:
$ mix dialyzer
Finding suitable PLTs
Checking PLT...
[:asn1, :bamboo, :bcrypt_elixir, :cache_server, :certifi, :compiler, :connection, :core, :cors_plug, :cowboy, :cowlib, :crypto, :database, :db_connection, :decimal, :ecto, :eex, :elixir, :elixir_make, :gettext, :hackney, :idna, :jason, :kernel, :logger, :metrics, :mime, :mimerl, :parse_trans, :phoenix, :phoenix_html, :phoenix_pubsub, :plug, :poison, :poolboy, :postgrex, :public_key, :ranch, :runtime_tools, :ssl, :ssl_verify_fun, :stdlib, :unicode_util_compat]
PLT is up to date!
Starting Dialyzer
[
check_plt: false,
init_plt: '/______/code/aetherwars_umbrella/_build/dev/dialyxir_erlang-21.0_elixir-1.7.2_deps-dev.plt',
files_rec: ['/______/code/aetherwars_umbrella/_build/dev/lib/web/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/cache_server/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/database/ebin',
'/______/code/aetherwars_umbrella/_build/dev/lib/core/ebin'],
warnings: [:unknown]
]
Total errors: 70, Skipped: 0
done in 2m2.05s
雨伞mix.exs:
# ...
def project do
[
apps_path: "apps",
start_permanent: Mix.env() == :prod,
deps: deps(),
dialyzer: [plt_add_deps: :transitive],
aliases: aliases()
]
end
#....
defp deps do
[
{:dialyxir, "~> 1.0.0-rc.3", only: [:dev], runtime: false},
{:benchee, "~> 0.11", only: :dev}
]
end