Как исправить ошибку Dialyzer "Обратный вызов о поведении"..... "недоступен" для новых Mix.Tasks
Я создал новый Mix.Task
в /lib/mix/tasks/start.ex для моего проекта
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 ответ
Похоже, у меня не было добавлено опций 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
dialyzer добавляется через dialyxir в тот же файл mix.exs, как это
defp deps do
[
{:dialyxir, "~> 0.5", only: [:dev], runtime: false}
]
end
mix do deps.get, deps.compile
И ваш диализатор должен перестать жаловаться mix dialyzer