pub enum FactPayload {
Show 28 variants
Declaration {
decl: DeclId,
logical_id: String,
},
Reference {
from_decl: DeclId,
to_logical_id: String,
},
DependencyEdge {
from_logical_id: String,
to_logical_id: String,
edge_kind: String,
},
DynamicSqlEvidence {
site: String,
},
DbLinkReference {
object: String,
db_link: String,
},
Opacity {
target_logical_id: String,
reason: String,
},
ResolutionReport {
reference: String,
strategy: String,
},
Privilege {
grantee: String,
privilege: String,
on: String,
},
ConstantValue {
unit_logical_id: String,
name: String,
value: ConstantValue,
},
ValueSet {
unit_logical_id: String,
name: String,
value_set: ValueSet,
},
StringShape {
unit_logical_id: String,
name: String,
shape: StringShape,
},
Taint {
unit_logical_id: String,
name: String,
kinds: Vec<TaintKind>,
},
Sanitizer {
unit_logical_id: String,
name: String,
cleansed_by: Vec<TaintCleanser>,
},
ExceptionHandler {
unit_logical_id: String,
scope: String,
body_class: String,
},
CursorForLoop {
unit_logical_id: String,
loop_var: String,
has_body_dml: bool,
},
MissingInstrumentation {
unit_logical_id: String,
},
HardcodedCredential {
unit_logical_id: String,
marker: String,
},
InvokerRights {
unit_logical_id: String,
},
RefCursorReturn {
unit_logical_id: String,
},
DmlInFunction {
unit_logical_id: String,
},
UnboundedBulkCollect {
unit_logical_id: String,
},
DeprecatedFeature {
unit_logical_id: String,
feature: String,
},
DeterministicMisuse {
unit_logical_id: String,
construct: String,
},
MutatingTableTrigger {
unit_logical_id: String,
table: String,
},
LogWithoutReraise {
unit_logical_id: String,
},
CrossSchemaWrite {
unit_logical_id: String,
target: String,
},
SensitivePublicSynonym {
unit_logical_id: String,
synonym: String,
target: String,
},
IsNullOnIndexedColumn {
unit_logical_id: String,
column: String,
},
}Expand description
Discriminated payload — one variant per FactKind. The
per-family types are intentionally lightweight; consumers
that need richer detail re-fetch from the originating crate’s
model (e.g. lineage’s LineageResult).
Variants§
Declaration
Reference
DependencyEdge
DynamicSqlEvidence
DbLinkReference
Opacity
ResolutionReport
Privilege
ConstantValue
A variable/expression with a compile-time constant value in the
flow lattice. name is normalized to the analyzer’s semantic
identifier for that value inside unit_logical_id.
ValueSet
A variable/expression whose possible values are bounded by
the flow lattice. ValueSet::Top is intentionally not
emitted: absence of this fact means “unbounded/unmeasured”,
not safety.
StringShape
The string-shape abstraction for a variable/expression. SAST and lineage can consume this without re-walking the raw expression tree.
Taint
Live taint kinds flowing into a variable/expression.
Sanitizer
Sanitizers observed in a value’s derivation. This is evidence for reports; it is never proof of safety by itself.
ExceptionHandler
An EXCEPTION WHEN ... THEN ... handler. scope is the
caught condition (others or a named exception); body_class
classifies the handler body so syntactic rules can decide
without re-parsing: noop (only NULL; — QUAL001 swallowed
exception), commit / rollback (QUAL004 transaction control
in a handler), or other.
CursorForLoop
A cursor FOR loop (FOR <var> IN (<query>|<cursor>) LOOP … END LOOP;). has_body_dml is true when the loop body
contains a row-level INSERT/UPDATE/DELETE/MERGE —
PERF001 flags any cursor-FOR-loop as a bulk-collect
candidate; PERF002 flags the has_body_dml subset as a
FORALL candidate. Conservative (R13): an ambiguous shape
yields no fact rather than a wrong one.
MissingInstrumentation
A routine body in which no recognized instrumentation call (logging / tracing / audit) was found. STYLE001 (opt-in, per house policy) decides whether that is a finding; the fact only reports the absence, never asserts a violation.
HardcodedCredential
A string literal that is, by strong syntactic context, a
hardcoded secret (IDENTIFIED BY '…', an assignment to a
password/secret/token-named target, or a password => '…'
named argument). marker records the matched context so
SEC003 can explain the finding. Conservative (R13): only
emitted when a literal directly follows a credential marker.
InvokerRights
The unit declares AUTHID CURRENT_USER (invoker’s rights).
Resolution of privileges is deferred to call time, which
widens the trust surface — SEC004 flags it for review (it is
frequently intentional, so the rule is advisory, not a hard
defect).
RefCursorReturn
A function whose RETURN type is a REF CURSOR
(SYS_REFCURSOR / REF CURSOR). Hands an open cursor to the
caller — a resource-ownership and (when the cursor wrapped
dynamic SQL) injection-amplification concern. SEC007.
DmlInFunction
A FUNCTION whose body performs row-level DML
(INSERT/UPDATE/DELETE/MERGE). Side-effecting
functions break purity, are unsafe in SQL/parallel/replication
contexts, and surprise callers. QUAL007.
UnboundedBulkCollect
A BULK COLLECT INTO with no LIMIT in the same statement —
the entire result set is materialized into PGA memory
unbounded. QUAL003.
DeprecatedFeature
A well-known deprecated / legacy construct (feature names
the match: dbms_job, legacy (+) outer join, … work
transaction-control keyword). QUAL005.
DeterministicMisuse
A function marked DETERMINISTIC whose body contains a
non-deterministic construct (DML, query, SYSDATE/
SYSTIMESTAMP, DBMS_RANDOM, sequence .NEXTVAL). QUAL008.
MutatingTableTrigger
A row-level (FOR EACH ROW) trigger whose body references
its own base table in a query/DML — ORA-04091 mutating-
table hazard. QUAL006.
LogWithoutReraise
An exception handler that logs (or otherwise instruments) but neither re-raises nor signals, silently continuing — the failure is recorded yet swallowed. QUAL002.
CrossSchemaWrite
A DML statement whose target object is schema-qualified to a
schema other than the unit’s own — a cross-schema write
surface. target is schema.object. DEP001.
SensitivePublicSynonym
A CREATE PUBLIC SYNONYM whose synonym or target name
matches a sensitivity heuristic (credential/PII/finance).
Public synonyms are visible to every account, so exposing a
sensitive object through one widens its reach. SEC005.
IsNullOnIndexedColumn
A <col> IS NULL predicate on a column that the same
analyzed source declares an index on (CREATE INDEX … (col …)). A B-tree index does not store all-NULL keys, so the
predicate cannot use that index — a silent full-scan. PERF003.
(Catalog-only indexes are out of this source-level scope.)
Implementations§
Trait Implementations§
Source§impl Clone for FactPayload
impl Clone for FactPayload
Source§fn clone(&self) -> FactPayload
fn clone(&self) -> FactPayload
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 FactPayload
impl Debug for FactPayload
Source§impl<'de> Deserialize<'de> for FactPayload
impl<'de> Deserialize<'de> for FactPayload
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>,
impl Eq for FactPayload
Source§impl PartialEq for FactPayload
impl PartialEq for FactPayload
Source§fn eq(&self, other: &FactPayload) -> bool
fn eq(&self, other: &FactPayload) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for FactPayload
impl Serialize for FactPayload
impl StructuralPartialEq for FactPayload
Auto Trait Implementations§
impl Freeze for FactPayload
impl RefUnwindSafe for FactPayload
impl Send for FactPayload
impl Sync for FactPayload
impl Unpin for FactPayload
impl UnsafeUnpin for FactPayload
impl UnwindSafe for FactPayload
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> 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<T> JsonExportable for Twhere
T: Serialize + DeserializeOwned,
impl<T> JsonExportable for Twhere
T: Serialize + DeserializeOwned,
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