gpt4 book ai didi

elixir - 关于 Gettext 模块上的 pattern_match_cov 的透析器警告

转载 作者:行者123 更新时间:2023-12-04 15:45:15 26 4
gpt4 key购买 nike

我开始在基于 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 应用程序不会产生透析器警告。我还确认了另一个(新创建的) Phoenix 伞项目。

我还没有为我现有的项目找到任何解决方案。

[更新 2]

我找到了如何重现我的问题。

新创建的应用程序不会警告你,但如果它包含实际需要插值的翻译数据,它会警告你。

有关更多信息,请参阅我的 github 问题评论:

https://github.com/elixir-lang/gettext/issues/115#issuecomment-491591307

最佳答案

作为修复 bug 之前的解决方法,我在 umbrella 项目的根目录中制作了包含以下内容的 .dialyzer_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}
]

这里,app1app2app3 是伞形项目下的应用名称。

关于elixir - 关于 Gettext 模块上的 pattern_match_cov 的透析器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com