pub struct IpaConfig {
pub max_path_depth: usize,
pub max_flows_per_source: usize,
pub max_visited: usize,
pub max_total_flows: usize,
pub max_functions_for_ipa: usize,
}Expand description
Configuration for inter-procedural analysis (IPA) limits.
These limits control memory usage and analysis depth for taint tracking. Increase limits for more thorough analysis on high-memory machines. Decrease limits to analyze extremely large codebases with limited memory.
All fields have sensible defaults that work well for most codebases.
Fields§
§max_path_depth: usizeMaximum call chain depth from source to sink (default: 8) Most real vulnerabilities have depth < 5.
max_flows_per_source: usizeMaximum taint flows tracked per source function (default: 200) Increase if you suspect missed flows from a single source.
max_visited: usizeMaximum functions visited per source exploration (default: 1000) Prevents memory explosion in extremely dense call graphs.
max_total_flows: usizeMaximum total inter-procedural flows reported (default: 5000) Most real analyses produce < 500 flows.
max_functions_for_ipa: usizeMaximum functions before skipping interprocedural analysis (default: 10000) For crates exceeding this threshold, IPA is skipped but intra-procedural analysis still runs for all rules.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for IpaConfig
impl<'de> Deserialize<'de> for IpaConfig
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 IpaConfig
impl RefUnwindSafe for IpaConfig
impl Send for IpaConfig
impl Sync for IpaConfig
impl Unpin for IpaConfig
impl UnsafeUnpin for IpaConfig
impl UnwindSafe for IpaConfig
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> 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