如何修复Dialyzer"关于'.....'行为的回调信息不可用"新Mix.Tasks的错误

prn*_*sml 12 elixir dialyzer

Mix.Task在/lib/mix/tasks/start.ex中为我的项目创建了新的

defmodule Mix.Tasks.Start do
  use Mix.Task

  def run(_), do: IO.puts("Hello, World!")
end
Run Code Online (Sandbox Code Playgroud)

现在,它可以从控制台运行,如下所示:
mix start

但是我得到了Dialyzer的错误Callback info about the 'Elixir.Mix.Task' behaviour is not available.它是什么意思以及如何解决这个问题?

prn*_*sml 13

好像我没有为透析器添加持久查询表(PLT)选项。对于“ Elixir.Mix.Task”行为可用于透析器的情况,我必须更新mix.exs文件并定义透析器应为哪些模块创建PLT。

  def project do
    [
      app: :dungeon_crawl,
      version: "0.1.0",
      elixir: "~> 1.6",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      # Added following line
      dialyzer: [plt_add_apps: [:mix]]
    ]
  end
Run Code Online (Sandbox Code Playgroud)

透析器是通过Dialyxir添加到相同的mix.exs文件中的

  defp deps do
    [
      {:dialyxir, "~> 0.5", only: [:dev], runtime: false}
    ]
  end
Run Code Online (Sandbox Code Playgroud)

mix do deps.get, deps.compile
而且您的透析器应该停止抱怨:
mix dialyzer