pub struct DetectorSpec {
pub id: String,
pub name: String,
pub service: String,
pub severity: Severity,
pub patterns: Vec<PatternSpec>,
pub companions: Vec<CompanionSpec>,
pub verify: Option<VerifySpec>,
pub keywords: Vec<String>,
pub min_confidence: Option<f64>,
pub tests: Vec<DetectorTestSpec>,
}Expand description
A complete detector definition loaded from a TOML file.
Fields§
§id: StringUnique stable identifier (e.g. `aws-access-key`).
name: StringHuman-readable name.
service: StringTarget service (e.g. `aws`, `stripe`).
severity: SeverityDefault severity for findings.
patterns: Vec<PatternSpec>List of regex patterns to match.
companions: Vec<CompanionSpec>Secondary patterns required to confirm a match.
verify: Option<VerifySpec>Live verification configuration.
keywords: Vec<String>High-performance pre-filtering keywords.
min_confidence: Option<f64>Self-declared per-detector confidence floor, in [0.0, 1.0].
When set, findings from THIS detector use this floor instead of the
global --min-confidence / [scan] min_confidence. A detector with a
distinctive vendor prefix (e.g. sourcegraph sgp_<40hex>, cursor
key_<64hex>) is high-confidence by virtue of the prefix even when the
body is low-entropy hex that the generic confidence model scores below
the global floor; the detector author declares that here so the
detector ships working out of the box. Costs nothing at scan time —
it is a single O(1) map lookup at the post-scan floor gate, on an
already-compiled corpus. An operator .keyhog.toml
[detector.<id>] min_confidence still overrides this self-declared
default. None (the default) means “use the global floor”.
tests: Vec<DetectorTestSpec>Inline self-test fixtures ([[detector.tests]], Tier-B data): each entry
carries a positive example the detector MUST fire on and/or a negative
example it MUST NOT. Consumed by the contract/self-validate harness;
ignored at scan time. Modeled here (rather than silently dropped) so the
schema’s deny_unknown_fields typo-guard covers the whole detector file.
Trait Implementations§
Source§impl Clone for DetectorSpec
impl Clone for DetectorSpec
Source§fn clone(&self) -> DetectorSpec
fn clone(&self) -> DetectorSpec
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DetectorSpec
impl Debug for DetectorSpec
Source§impl Default for DetectorSpec
impl Default for DetectorSpec
Source§fn default() -> DetectorSpec
fn default() -> DetectorSpec
Source§impl<'de> Deserialize<'de> for DetectorSpec
impl<'de> Deserialize<'de> for DetectorSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for DetectorSpec
impl RefUnwindSafe for DetectorSpec
impl Send for DetectorSpec
impl Sync for DetectorSpec
impl Unpin for DetectorSpec
impl UnsafeUnpin for DetectorSpec
impl UnwindSafe for DetectorSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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 more