我开始在基于 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