我在/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
。这是什么意思,以及如何解决?
答案 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