pub struct InterProceduralAnalysis {
pub call_graph: CallGraph,
pub summaries: HashMap<String, FunctionSummary>,
pub closure_registry: ClosureRegistry,
/* private fields */
}Expand description
Main inter-procedural analysis engine
Fields§
§call_graph: CallGraphCall graph
summaries: HashMap<String, FunctionSummary>Computed function summaries
closure_registry: ClosureRegistryClosure registry for tracking closures and captures
Implementations§
Source§impl InterProceduralAnalysis
impl InterProceduralAnalysis
Sourcepub fn new(package: &MirPackage) -> Result<Self>
pub fn new(package: &MirPackage) -> Result<Self>
Create a new inter-procedural analysis with default configuration
Sourcepub fn with_config(package: &MirPackage, config: IpaConfig) -> Result<Self>
pub fn with_config(package: &MirPackage, config: IpaConfig) -> Result<Self>
Create a new inter-procedural analysis with custom configuration
Sourcepub fn analyze(&mut self, package: &MirPackage) -> Result<()>
pub fn analyze(&mut self, package: &MirPackage) -> Result<()>
Analyze all functions and generate summaries
Sourcepub fn get_summary(&self, function_name: &str) -> Option<&FunctionSummary>
pub fn get_summary(&self, function_name: &str) -> Option<&FunctionSummary>
Get summary for a function
Sourcepub fn print_statistics(&self)
pub fn print_statistics(&self)
Print summary statistics
Sourcepub fn detect_inter_procedural_flows(
&self,
package: &MirPackage,
) -> Vec<TaintPath>
pub fn detect_inter_procedural_flows( &self, package: &MirPackage, ) -> Vec<TaintPath>
Detect inter-procedural taint flows (cached after first call)
Auto Trait Implementations§
impl !Freeze for InterProceduralAnalysis
impl !RefUnwindSafe for InterProceduralAnalysis
impl Send for InterProceduralAnalysis
impl !Sync for InterProceduralAnalysis
impl Unpin for InterProceduralAnalysis
impl UnsafeUnpin for InterProceduralAnalysis
impl UnwindSafe for InterProceduralAnalysis
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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