静态分析器透析器(我通过dialyxir使用它)将Logger(Logger.info "blah")的所有使用情况报告为无与伦比的返回:

Expression produces a value of type 'ok' | {'error',_}, but this value is unmatched

我可以编写:ok  = Logger.info "blah",但显然很麻烦。我还可以使用-Wno_unmatched_returns配置透析器以忽略所有这些警告。但是,我发现它们非常有用,并且不想忽略它们。

documentation of dialyzer表示,我们可以使用模块属性来逐个模块停用警告,但是我看不到是否只能将此信息放入Elixir源文件中。

有没有一种方法可以将Dialyzer配置为忽略此类警告,但仅适用于Logger?

最佳答案

这里有@dialyzer属性here的文档。您将需要向下搜索页面才能找到它。

在这种情况下,我相信以下模块属性:

@dialyzer {:no_return, your_function_name: 1}

应该给你你想要的。只需将其放在使用Logger的每个模块的顶部即可,如下所示:
defmodule MyLogging do
 @dialyzer {:no_return, your_function_name: 1}
 .
 .
 .

请注意,您似乎只能关闭当前模块中功能的警告。即,似乎不可能关闭针对不同模块中的功能的警告(例如Logger.info: 1)。

关于logging - 记录仪无与伦比的返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36398151/

10-13 06:13