pub struct Matcher {Show 20 fields
pub id: String,
pub cwe: u32,
pub title: String,
pub effect: EffectKind,
pub sink_shape: SinkShape,
pub callee_patterns: Vec<CalleePattern>,
pub arg_index: u32,
pub evidence_template: String,
pub import_provenance: Option<String>,
pub enabler: Option<String>,
pub arg_kinds: Option<Vec<SinkArgKind>>,
pub requires_source: bool,
pub requires_source_kinds: Vec<String>,
pub literal_values: Vec<String>,
pub literal_contains: Vec<String>,
pub literal_integers: Vec<i64>,
pub object_properties: Vec<ObjectPropertyPredicate>,
pub object_missing_or_false: Vec<String>,
pub object_missing: Vec<String>,
pub context_keywords: Vec<String>,
}Expand description
A parsed, validated matcher with the sink shape resolved to the typed enum and callee patterns pre-segmented for O(1)-ish matching.
Fields§
§id: String§cwe: u32§title: String§effect: EffectKind§sink_shape: SinkShape§callee_patterns: Vec<CalleePattern>§arg_index: u32§evidence_template: String§import_provenance: Option<String>§enabler: Option<String>Framework enabler package gate (issue #861). None = global row.
Some("pkg") requires an exact dependency match; Some("@scope/")
(trailing slash) requires any dependency under that prefix.
arg_kinds: Option<Vec<SinkArgKind>>Resolved allowlist of admitted argument shapes. None admits any
non-literal shape; Some requires the captured arg_kind to be listed.
requires_source: boolWhether this matcher only fires when the sink argument traces to a configured untrusted source binding.
requires_source_kinds: Vec<String>When non-empty, narrows requires_source to these catalogue source ids
(issue #890): the matched source’s id must be one of these. Empty admits
any matched source.
literal_values: Vec<String>String-literal values admitted by this row.
literal_contains: Vec<String>String fragments admitted by this row.
literal_integers: Vec<i64>Integer literal values admitted by this row.
object_properties: Vec<ObjectPropertyPredicate>Required literal object properties.
object_missing_or_false: Vec<String>Object properties whose absence or boolean false makes the row match.
object_missing: Vec<String>Object keys whose absence makes the row match.
context_keywords: Vec<String>Context-name keywords admitted by this row.
Implementations§
Source§impl Matcher
impl Matcher
Sourcepub fn first_matching_pattern(
&self,
callee_path: &str,
) -> Option<&CalleePattern>
pub fn first_matching_pattern( &self, callee_path: &str, ) -> Option<&CalleePattern>
The first callee pattern that matches the given path, if any. The first match wins, matching the deterministic declaration order.
Sourcepub fn admits_arg_kind(&self, arg_kind: SinkArgKind) -> bool
pub fn admits_arg_kind(&self, arg_kind: SinkArgKind) -> bool
Whether a captured argument shape is admitted by this matcher. None
arg_kinds admits any shape; Some requires the kind to be listed.
Sourcepub fn is_literal_aware(&self) -> bool
pub fn is_literal_aware(&self) -> bool
Whether this row has opted into matching a literal, object-property, or context-only sink that is not covered by the default non-literal model.
Sourcepub fn literal_value_satisfied(
&self,
literal: Option<&SinkLiteralValue>,
) -> bool
pub fn literal_value_satisfied( &self, literal: Option<&SinkLiteralValue>, ) -> bool
Whether captured literal metadata satisfies this row’s literal gates.
Sourcepub fn object_properties_satisfied(
&self,
properties: &[SinkObjectProperty],
) -> bool
pub fn object_properties_satisfied( &self, properties: &[SinkObjectProperty], ) -> bool
Whether captured object-literal metadata satisfies this row’s object property gates.
Sourcepub fn object_missing_satisfied(
&self,
keys: &[String],
keys_complete: bool,
) -> bool
pub fn object_missing_satisfied( &self, keys: &[String], keys_complete: bool, ) -> bool
Whether missing-key predicates are satisfied by complete static object key metadata.
Sourcepub fn context_satisfied(&self, context_names: &[String]) -> bool
pub fn context_satisfied(&self, context_names: &[String]) -> bool
Whether captured context names satisfy this row’s context keyword gate.
Sourcepub fn enabler_satisfied(&self, declared_deps: &FxHashSet<String>) -> bool
pub fn enabler_satisfied(&self, declared_deps: &FxHashSet<String>) -> bool
Whether this matcher’s framework enabler is satisfied by the project’s
declared dependency set (issue #861). None enabler is always satisfied
(a global row). A Some enabler matches by exact package name, or, when
it ends with /, by prefix (@angular/ matches @angular/platform-browser),
mirroring the plugin-system enablers() semantics so framework rows
activate on exactly the dependency universe the plugins do.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Matcher
impl RefUnwindSafe for Matcher
impl Send for Matcher
impl Sync for Matcher
impl Unpin for Matcher
impl UnsafeUnpin for Matcher
impl UnwindSafe for Matcher
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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<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