30得票1回答
如何解决 Dialyzer 在新的 Mix.Tasks 中出现的 "Callback info about the '.....' behaviour is not available" 错误

我在我的项目的/lib/mix/tasks/start.ex中创建了一个新的Mix.Taskdefmodule Mix.Tasks.Start do use Mix.Task def run(_), do: IO.puts("Hello, World!") end 现在,它可以通过控...

17得票2回答
如何避免Dialyzer在具有匹配所有`else`的`with`语句中出现“can never match”错误?

我有以下代码:@spec test_pass(String.t) :: (:failed | {:ok, map()}) def test_pass(pass) do db_user = %{password_hash: @hash_for_foo} with {:ok, ^db_us...

11得票1回答
如何为单个字母的ASCII字符串(值0-127)指定类型规范?

同样地,我如何为“单个”UTF8字符进行类型规范? 在类型定义中,我可以使用泛型的“任何字符串”或“任何UTF8字符串”,例如:@type tile :: String.t # matches any string @type tile :: <<_::8>> # m...

8得票1回答
在Elixir类型规范的类型定义中指定字符串值

是否可以定义以下类型: defmodule Role do use Exnumerator, values: ["admin", "regular", "restricted"] @type t :: "admin" | "regular" | "restricted" @s...

8得票2回答
为什么Dialyzer告诉我这个函数合同具有重叠的域?

我正在阅读在线书籍 "learn you some erlang",并尝试一些练习来检查我的理解。 我对 fifo 示例做了一些修改,在章节类型规范和 Erlang中,尝试定义一个 "typed_fifo(T)"(所有元素都必须是同一类型 T 的 fifo)。 我的类型规范如下: -t...

8得票1回答
Erlang:将类型规范添加到代码中是否会使得Dialyzer更加有效?

我有一个项目,代码中没有 -spec 或 -type,目前 dialyzer 能够找到一些警告信息,其中大部分在机器生成的代码中。 添加类型规范能否让 dialyzer 发现更多错误? 顺带一提,是否有工具可以检查规范是否被违反?

8得票1回答
Dialyzer 表示函数永远不会被调用,尽管它存在。

我正在使用elixir_talk库。连接后,我想在与beanstalkd连接后调用一个私有函数。我刚刚添加了类型规范并运行了Dialyzer(通过dialyxir)。我收到以下错误: my_module.ex:3: The specification for 'Elixir.MyModule...

7得票2回答
如何让 Dialyzer 忽略某些未导出的函数?

我正在使用Lager进行日志记录;它有一个解析器转换,将lager:warn/1等函数转换为lager:trace...函数。 但是dialyzer不处理解析器转换,因此会警告调用丢失或未导出的函数lager:warn/1。 我该如何告诉它这个函数确实存在,而且不要对它发出警告?