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

excluded?(file, line, rule, exclusions)

@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.

filter_results(results, exclusions)

@spec filter_results(map(), [Ragex.Analysis.Exclusion.t()]) :: map()

Filters results map from Runner.run_all/2 removing any excluded findings.

load(opts_or_path \\ nil)

@spec load(String.t() | map() | keyword() | nil) :: [Ragex.Analysis.Exclusion.t()]

Loads exclusion rules from .ragex.exs or custom config path.

normalize_file_path(path)

@spec normalize_file_path(String.t()) :: String.t()

Normalizes file paths for consistent comparison (e.g. ./lib/foo.ex -> lib/foo.ex).

normalize_rule(rule)

@spec normalize_rule(term()) :: String.t() | nil

Normalizes rule names into clean snake_case strings for comparison.

parse_config_result(list)

@spec parse_config_result(term()) :: [Ragex.Analysis.Exclusion.t()]

Parses raw config evaluation result into a list of %Exclusion{} structs.

parse_exclusion_item(rule)

@spec parse_exclusion_item(term()) :: [Ragex.Analysis.Exclusion.t()]

Parses an individual exclusion entry into an %Exclusion{} struct.

parse_location_string(str)

@spec parse_location_string(String.t()) :: {String.t(), integer() | nil}

Parses location strings like "lib/ragex/analyzers/directory.ex:248".