Packages
excoveralls
0.6.1
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.1
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.2
0.11.1
0.11.0
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
Coverage report tool for Elixir with coveralls.io integration.
Current section
Files
Jump to
Current section
Files
lib/excoveralls/stop_words.ex
defmodule ExCoveralls.StopWords do
@moduledoc """
Handles stop words for filtering the coverage results.
"""
@doc """
Filters out pre-defined stop words.
"""
def filter(info, words \\ ExCoveralls.Settings.get_stop_words) do
Enum.map(info, fn(x) -> do_filter(x, words) end)
end
defp do_filter([{:name, name}, {:source, source}, {:coverage, coverage}], words) do
lines = String.split(source, "\n")
list = Enum.zip(lines, coverage)
|> Enum.map(fn(x) -> has_valid_line?(x, words) end)
|> List.zip
|> Enum.map(&Tuple.to_list(&1))
[source, coverage] = parse_filter_list(list)
[name: name, source: source, coverage: coverage]
end
defp parse_filter_list([]), do: ["", []]
defp parse_filter_list([lines, coverage]), do: [Enum.join(lines, "\n"), coverage]
defp has_valid_line?({line, coverage}, words) do
if find_stop_words(line, words) == false do
{line, coverage}
else
{line, nil}
end
end
defp find_stop_words(line, words) do
Enum.any?(words, fn(word) -> line =~ word end)
end
end