我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