elixir - 如何修复新 Mix.Tasks 的 Dialyzer“关于 '.....' 行为的回调信息不可用”错误
问题描述
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
但我收到透析器错误,即Callback info about the 'Elixir.Mix.Task' behaviour is not available
. 这是什么意思以及如何解决这个问题?
解决方案
看起来我没有为透析器添加持久查找表(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
推荐阅读
- sql-server - 使用表值参数插入表时遇到问题
- python - 如何在python中将json转换为纯文本
- pyqt - PyQt5 修复 Qlabel 位置
- batch-file - Windows 更多命令要求用户输入
- google-chrome - cordova.InAppBrowser 返回 null url 事件'{type: "loadstop", url: null}'
- python - 为什么将数据框导出到 aws mysql 会导致空表?
- java - DateTimeFormatter 的 DateTimeParseException,模式为“yyyy[-MM[-d[HH[:mm[:ss[.SSS]]]]]”
- elasticsearch - AWS ElasticSearch 集群的堆大小
- spring-boot - 检索访问令牌后,Spring Boot OAuth2“访问此资源需要完全身份验证”
- excel - 更改数字中最后 3 位的字体颜色