【发布时间】:2019-05-12 04:11:50
【问题描述】:
我开始在基于 Phoenix 1.4 的伞形项目中使用 Dialyzer (dialyxir 1.0.0-rc.6)。
当我第一次在上面运行mix dialyzer 时,我收到了这个警告。
apps/my_app/lib/my_app_web/gettext.ex:1:pattern_match_cov
The pattern
%{}
can never match since previous clauses completely cover the type
%{:count => _, _ => _}
这是这个文件的内容(gettext.ex):
defmodule MyProject.MyAppWeb.Gettext do
@moduledoc """
(*snip*)
"""
use Gettext, otp_app: :my_app
end
我没有碰它。如何修复它或禁止显示警告?
[更新]
我发现此问题已于 2018 年 2 月 20 日结束:
https://github.com/elixir-lang/gettext/issues/115
我确认新创建的 phoenix 应用程序不会产生透析器警告。我还确认了另一个(新创建的)凤凰伞项目。
我还没有为我现有的项目找到任何解决方案。
[更新 2]
我找到了如何重现我的问题。
新创建的应用程序不会警告您,但如果它包含实际需要插值的翻译数据,它会警告您。
有关更多信息,请参阅我的 github 问题评论:
https://github.com/elixir-lang/gettext/issues/115#issuecomment-491591307
【问题讨论】:
-
我在 Gettext 中也发现了一个类似的错误。维护人员提到他们不使用 Dialyzer。我想类似的问题在其他项目中有些常见,可能是许多项目的常见依赖项。
-
您在问题已关闭后添加了评论。关闭说明说,如果您重现问题以打开一个新问题。我认为您应该打开一个新问题,并描述如何重现它。您是否尝试过直接针对 gettext 运行 dialyzer 以帮助隔离问题?
标签: elixir phoenix-framework dialyzer