Elixir 透析器关于Gettext模块上模式匹配的警告
我开始在基于Phoenix 1.4的伞形项目中使用透析器(dialyxir 1.0.0-rc.6) 当我第一次在上面运行混血透析器时,我得到了这个警告Elixir 透析器关于Gettext模块上模式匹配的警告,elixir,phoenix-framework,dialyzer,Elixir,Phoenix Framework,Dialyzer,我开始在基于Phoenix 1.4的伞形项目中使用透析器(dialyxir 1.0.0-rc.6) 当我第一次在上面运行混血透析器时,我得到了这个警告 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 => _, _ => _} 以下是此
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
):
我没有碰它。如何修复或抑制警告
[更新]
我发现本期于2018年2月20日结束:
我确认新创建的phoenix应用程序不会产生透析器警告。我还确认了另一个(新创建的)凤凰伞项目
[
{"apps/app1/lib/app1_web/gettext.ex", :pattern_match_cov},
{"apps/app2/lib/app2_web/gettext.ex", :pattern_match_cov},
{"apps/app3/lib/app3_web/gettext.ex", :pattern_match_cov}
]
我还没有为我现有的项目找到任何解决方案
[更新2]
我发现了如何重现我的问题
新创建的应用程序不会警告您,但如果它包含实际需要插值的翻译数据,它会警告您
有关更多信息,请参阅我的github问题评论:
作为一种解决方法,在修复错误之前,我在伞形项目的根目录中使用以下内容制作了
.dialyzer\u ignores.exs
[
{"apps/app1/lib/app1_web/gettext.ex", :pattern_match_cov},
{"apps/app2/lib/app2_web/gettext.ex", :pattern_match_cov},
{"apps/app3/lib/app3_web/gettext.ex", :pattern_match_cov}
]
这里,
app1
、app2
和app3
是伞式项目下的应用程序名称。我在Gettext中也发现了类似的错误。维修人员提到他们不使用透析器。我认为类似的问题在其他项目中也很常见,这些项目可能是许多项目的共同依赖项。
[
{"apps/app1/lib/app1_web/gettext.ex", :pattern_match_cov},
{"apps/app2/lib/app2_web/gettext.ex", :pattern_match_cov},
{"apps/app3/lib/app3_web/gettext.ex", :pattern_match_cov}
]