【问题标题】:How to fix Dialyzer "Callback info about the '.....' behaviour is not available" error for new Mix.Tasks如何修复新 Mix.Tasks 的 Dialyzer“关于 '.....' 行为的回调信息不可用”错误
【发布时间】:2018-12-14 22:39:47
【问题描述】:

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

【问题讨论】:

  • 这可能是项目透析器设置缺少PLT中的一些部门,您是使用混合透析器还是直接配置透析器?您能否从您的mix.exs 文件中发布project 函数,该文件包含配置。

标签: elixir dialyzer


【解决方案1】:

看起来我没有为透析器添加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

【讨论】:

    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多