如何修复透析器有关行为的回调信息对于新的混合任务不可用&错误 [英] How to fix Dialyzer "Callback info about the '.....' behaviour is not available" error for new Mix.Tasks

查看:12
本文介绍了如何修复透析器有关行为的回调信息对于新的混合任务不可用&错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在/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

但我遇到透析器错误,即Callback info about the 'Elixir.Mix.Task' behaviour is not available。这意味着什么,以及如何解决此问题?

推荐答案

看起来我没有为透析器添加Persistent Lookup Table(Plt)选项。 在我的案例中,要使‘Elixir.Mix.Task’行为可用于透析器,我必须更新Mix.exs文件,并定义透析器应该为哪些模块创建PLT。

  def project do
    [
      app: :some_app,
      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

这篇关于如何修复透析器有关行为的回调信息对于新的混合任务不可用&错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆