Диализатор предупреждений о pattern_match_cov в модуле Gettext - PullRequest
1 голос
/ 12 мая 2019

Я начал использовать Dialyzer (dialyxir 1.0.0-rc.6) в своем зонтичном проекте на базе Phoenix 1.4.

Когда я впервые запустил 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

Я его не трогал.Как я могу это исправить или подавить предупреждения?

[ОБНОВЛЕНИЕ]

20 февраля 2018 года я обнаружил, что эта проблема закрыта:

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

Iподтвердил, что вновь созданное приложение Phoenix не выдает предупреждения диализатора.Я также подтвердил другой (недавно созданный) проект зонтика Phoenix.

Я не нашел никакого решения для своего существующего проекта.

[ОБНОВЛЕНИЕ 2]

Я нашел, каквоспроизведите мою проблему.

Недавно созданное приложение не предупредит вас, но предупредит вас, если оно содержит данные перевода, которые на самом деле требуют интерполяции.

См. Мой комментарий к проблеме github для получения дополнительной информации:

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

1 Ответ

1 голос
/ 12 мая 2019

В качестве обходного пути, пока ошибка не будет устранена, я сделал .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}
]

Здесь app1, app2 и app3 - названия приложений в рамках зонтичного проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...