diff --git a/lib/dialyxir/filter_map.ex b/lib/dialyxir/filter_map.ex index 6b6035f..f79d92a 100644 --- a/lib/dialyxir/filter_map.ex +++ b/lib/dialyxir/filter_map.ex @@ -16,14 +16,21 @@ defmodule Dialyxir.FilterMap do unused_filters_as_errors?: list_unused_filters? && !ignore_exit_status? } - {ignore, _} = - ignore_file - |> File.read!() - |> Code.eval_string() + cond do + File.exists?(ignore_file) && + match?(%{size: size} when size > 0, File.stat!(ignore_file)) -> + {ignore, _} = + ignore_file + |> File.read!() + |> Code.eval_string() - Enum.reduce(ignore, filter_map, fn skip, filter_map -> - put_in(filter_map.counters[skip], 0) - end) + Enum.reduce(ignore, filter_map, fn skip, filter_map -> + put_in(filter_map.counters[skip], 0) + end) + + true -> + filter_map + end end @doc """ diff --git a/lib/mix/tasks/dialyzer.ex b/lib/mix/tasks/dialyzer.ex index b545aaf..ceca844 100644 --- a/lib/mix/tasks/dialyzer.ex +++ b/lib/mix/tasks/dialyzer.ex @@ -187,6 +187,12 @@ defmodule Mix.Tasks.Dialyzer do No :ignore_warnings opt specified in mix.exs. Using default: #{default}. """) + ignore_warnings && File.exists?(ignore_warnings) && + match?(%{size: size} when size == 0, File.stat!(default)) -> + info(""" + :ignore_warnings opt specified in mix.exs: #{ignore_warnings}, but file is empty. + """) + ignore_warnings && File.exists?(ignore_warnings) -> info(""" ignore_warnings: #{ignore_warnings}