pub struct AnalysisOptions {
pub constraint_solving: bool,
pub abstract_interpretation: bool,
pub context_sensitive: bool,
pub symex: SymexOptions,
pub backwards_analysis: bool,
pub parse_timeout_ms: u64,
pub max_origins: u32,
pub max_pointsto: u32,
}Expand description
Stable configuration for the analysis engine.
Fields§
§constraint_solving: boolPath-constraint solving. Prunes infeasible paths from the taint worklist and records unsat contexts in findings.
abstract_interpretation: boolAbstract interpretation: interval/string/bit domains carried through the SSA worklist and used to suppress provably safe sinks.
context_sensitive: boolk=1 context-sensitive inlining for intra-file callees.
symex: SymexOptionsSymbolic-execution pipeline.
backwards_analysis: boolDemand-driven backwards taint analysis from sinks.
When enabled, after forward pass 2 completes, a backwards walk runs
from each sink’s tainted SSA operands to corroborate or rule out the
forward finding. Corroborated findings get a backwards-confirmed
note; flows the backward walk proves infeasible get a
backwards-infeasible note that caps confidence. Defaults off.
parse_timeout_ms: u64Per-file tree-sitter parse timeout in milliseconds. 0 disables the
cap entirely (not recommended outside of controlled benchmarks).
max_origins: u32Maximum taint origins retained per lattice value.
Controls both crate::taint::domain::VarTaint::origins and
the equivalent per-object bound inside the heap state. When a
merge would exceed this bound, origins are dropped deterministically
(sorted by source location) and an
crate::engine_notes::EngineNote::OriginsTruncated note is
recorded on the affected finding. Raising this reduces the
chance of silent under-reporting at the cost of slightly wider
lattice values. See DEFAULT_MAX_ORIGINS.
max_pointsto: u32Maximum abstract heap objects retained per intra-procedural points-to set.
When an allocation-site union would exceed this bound, the
largest-keyed heap objects are dropped and an
crate::engine_notes::EngineNote::PointsToTruncated note is
recorded. Taint flows that should have reached the dropped
objects via this aliasing path are lost (under-report). Raise
for factory-heavy codebases where truncation is observed; lower
only when points-to width is a measured bottleneck. See
DEFAULT_MAX_POINTSTO.
Trait Implementations§
Source§impl Clone for AnalysisOptions
impl Clone for AnalysisOptions
Source§fn clone(&self) -> AnalysisOptions
fn clone(&self) -> AnalysisOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AnalysisOptions
impl Debug for AnalysisOptions
Source§impl Default for AnalysisOptions
impl Default for AnalysisOptions
Source§impl<'de> Deserialize<'de> for AnalysisOptionswhere
AnalysisOptions: Default,
impl<'de> Deserialize<'de> for AnalysisOptionswhere
AnalysisOptions: Default,
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>,
Source§impl PartialEq for AnalysisOptions
impl PartialEq for AnalysisOptions
Source§impl Serialize for AnalysisOptions
impl Serialize for AnalysisOptions
impl Copy for AnalysisOptions
impl Eq for AnalysisOptions
impl StructuralPartialEq for AnalysisOptions
Auto Trait Implementations§
impl Freeze for AnalysisOptions
impl RefUnwindSafe for AnalysisOptions
impl Send for AnalysisOptions
impl Sync for AnalysisOptions
impl Unpin for AnalysisOptions
impl UnsafeUnpin for AnalysisOptions
impl UnwindSafe for AnalysisOptions
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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