Ragex. Analysis. Exclusions
(Ragex v0.32.2)
View Source
Manages loading and filtering of analyze exclusions from .ragex.exs.
Supports .ragex.exs config formats:
Format 1: Top-level list of exclusion tuples
[
{"lib/ragex/analyzers/directory.ex:248", "long_parameter_list"},
{"lib/ragex/analyzers/directory.ex", 150, "cyclomatic_complexity"},
{"lib/my_app/user.ex:50", "magic_number"}
]Format 2: Map or Keyword list with an :exclusions key
%{
exclusions: [
{"lib/ragex/analyzers/directory.ex:248", "long_parameter_list"}
]
}
Summary
Functions
Checks if a finding with (file, line, rule) is excluded by any rule in exclusions.
Filters results map from Runner.run_all/2 removing any excluded findings.
Loads exclusion rules from .ragex.exs or custom config path.
Normalizes file paths for consistent comparison (e.g. ./lib/foo.ex -> lib/foo.ex).
Normalizes rule names into clean snake_case strings for comparison.
Parses raw config evaluation result into a list of %Exclusion{} structs.
Parses an individual exclusion entry into an %Exclusion{} struct.
Parses location strings like "lib/ragex/analyzers/directory.ex:248".
Functions
@spec excluded?(String.t() | nil, integer() | nil, term(), [ Ragex.Analysis.Exclusion.t() ]) :: boolean()
Checks if a finding with (file, line, rule) is excluded by any rule in exclusions.
@spec filter_results(map(), [Ragex.Analysis.Exclusion.t()]) :: map()
Filters results map from Runner.run_all/2 removing any excluded findings.
@spec load(String.t() | map() | keyword() | nil) :: [Ragex.Analysis.Exclusion.t()]
Loads exclusion rules from .ragex.exs or custom config path.
Normalizes file paths for consistent comparison (e.g. ./lib/foo.ex -> lib/foo.ex).
Normalizes rule names into clean snake_case strings for comparison.
@spec parse_config_result(term()) :: [Ragex.Analysis.Exclusion.t()]
Parses raw config evaluation result into a list of %Exclusion{} structs.
@spec parse_exclusion_item(term()) :: [Ragex.Analysis.Exclusion.t()]
Parses an individual exclusion entry into an %Exclusion{} struct.
Parses location strings like "lib/ragex/analyzers/directory.ex:248".