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

时间:2018-07-06 10:29:15

标签: elixir dialyzer

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

defmodule Mix.Tasks.Start do
  use Mix.Task

  def run(_), do: IO.puts("Hello, World!")
end

现在,它可以像这样从控制台运行:
mix start

但是我遇到了Dialyzer错误,即Callback info about the 'Elixir.Mix.Task' behaviour is not available。这是什么意思,以及如何解决?

1 个答案:

答案 0 :(得分:8)

好像我没有为透析器添加Persistent Lookup Table(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
像这样通过<{3}}将

dialyzer添加到相同的mix.exs文件中

  defp deps do
    [
      {:dialyxir, "~> 0.5", only: [:dev], runtime: false}
    ]
  end

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