Как исправить ошибку Dialyzer «Обратный вызов о поведении« ..... »недоступен» для новых Mix.Tasks - PullRequest
0 голосов
/ 06 июля 2018

Я создал новый 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 Ответ

0 голосов
/ 07 июля 2018

Похоже, у меня не было Таблица постоянных запросов (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

добавляется диализатор через dialyxir в том же файле mix.exs, как этот

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

mix do deps.get, deps.compile
И ваш диализатор должен прекратить жаловаться:
mix dialyzer

...