pub struct SuppressionContext<'a> { /* private fields */ }Expand description
Suppression context that tracks which suppressions are consumed by detectors.
Wraps the per-file suppression map and records, via AtomicBool flags,
which suppression entries actually matched an issue during detection.
After all detectors run, find_stale() returns unmatched suppressions.
Uses AtomicBool (not Cell<bool>) so the context can be shared
across threads if detectors ever use rayon internally.
Implementations§
Source§impl<'a> SuppressionContext<'a>
impl<'a> SuppressionContext<'a>
Sourcepub fn new(modules: &'a [ModuleInfo]) -> Self
pub fn new(modules: &'a [ModuleInfo]) -> Self
Build a suppression context from parsed modules.
Sourcepub fn is_suppressed(&self, file_id: FileId, line: u32, kind: IssueKind) -> bool
pub fn is_suppressed(&self, file_id: FileId, line: u32, kind: IssueKind) -> bool
Check if a specific issue at a given line should be suppressed, and mark the matching suppression as consumed.
Sourcepub fn is_file_suppressed(&self, file_id: FileId, kind: IssueKind) -> bool
pub fn is_file_suppressed(&self, file_id: FileId, kind: IssueKind) -> bool
Check if the entire file is suppressed for the given kind, and mark the matching suppression as consumed.
Sourcepub fn is_policy_suppressed(
&self,
file_id: FileId,
line: u32,
pack: &str,
rule_id: &str,
) -> bool
pub fn is_policy_suppressed( &self, file_id: FileId, line: u32, pack: &str, rule_id: &str, ) -> bool
Check if a policy finding at a given line should be suppressed.
Sourcepub fn get(&self, file_id: FileId) -> Option<&[Suppression]>
pub fn get(&self, file_id: FileId) -> Option<&[Suppression]>
Get the raw suppressions for a file (for detectors that need direct access).
Sourcepub fn used_count(&self) -> usize
pub fn used_count(&self) -> usize
Count suppression entries that matched at least one issue.
Sourcepub fn find_stale(
&self,
graph: &ModuleGraph,
config: &ResolvedConfig,
) -> Vec<StaleSuppression>
pub fn find_stale( &self, graph: &ModuleGraph, config: &ResolvedConfig, ) -> Vec<StaleSuppression>
Collect all suppressions that were never consumed by any detector.
Skips suppression kinds that are checked in the CLI layer
(complexity, coverage gaps, feature flags, code duplication)
to avoid false positives. Also skips suppressions whose target kind
is disabled (Severity::Off) under the resolved rules for the
suppression’s file, including per-file overrides.rules: the
detector never ran, so the suppression appears unconsumed, but is
not actually stale (it documents intentional dormancy and becomes
valid again the moment the rule is re-enabled). See issue #482.
Sourcepub fn find_missing_reasons(&self, graph: &ModuleGraph) -> Vec<StaleSuppression>
pub fn find_missing_reasons(&self, graph: &ModuleGraph) -> Vec<StaleSuppression>
Collect suppression comments that are missing -- <reason>.
Sourcepub fn all_suppressions(&self, graph: &ModuleGraph) -> Vec<ActiveSuppression>
pub fn all_suppressions(&self, graph: &ModuleGraph) -> Vec<ActiveSuppression>
Collect every suppression comment present in the analyzed files this run, keyed by file path and kind.
This is the “active-suppression state” the Fallow Impact value report
needs (issue: v1.5 attribution): to tell a genuinely resolved finding
(code removed) from one merely silenced by a newly-added fallow-ignore,
impact records which suppressions are in play each run and looks for ones
that newly appeared covering a disappeared finding’s kind.
Unlike Self::find_stale, this returns ALL present suppressions
regardless of whether a core detector consumed them, and across every
kind (dead-code, complexity, code-duplication, …). Impact only needs to
know a suppression for (file, kind) exists; a present-but-stale entry is
harmless because impact’s discriminator keys on a suppression that newly
appeared between two recorded runs, and a finding silenced by a present
suppression was never reported (so it never enters the resolved tally).
Complexity and code-duplication suppressions are consumed in the CLI
layer rather than through this context, so capturing presence here is the
single uniform mechanism that covers all three impact categories.
Auto Trait Implementations§
impl<'a> Freeze for SuppressionContext<'a>
impl<'a> RefUnwindSafe for SuppressionContext<'a>
impl<'a> Send for SuppressionContext<'a>
impl<'a> Sync for SuppressionContext<'a>
impl<'a> Unpin for SuppressionContext<'a>
impl<'a> UnsafeUnpin for SuppressionContext<'a>
impl<'a> UnwindSafe for SuppressionContext<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more