Class BamCpa<ContentT extends AbstractState<ContentT>>

java.lang.Object
proguard.analysis.cpa.bam.BamCpa<ContentT>
Type Parameters:
ContentT - > The content of the jvm states produced by the transfer relation. For example, this can be a SetAbstractState of taints for taint analysis or a ValueAbstractState for value analysis.
All Implemented Interfaces:
ConfigurableProgramAnalysis<JvmAbstractState<ContentT>>

public class BamCpa<ContentT extends AbstractState<ContentT>> extends Object implements ConfigurableProgramAnalysis<JvmAbstractState<ContentT>>
A ConfigurableProgramAnalysis for inter-procedural analysis using block abstraction memoization as described in , which is defined by a domain-dependent CpaWithBamOperators that adds three operators: reduce, expand, and rebuild. This allows an inter-procedural analysis running this CPA to be conducted by the standard CpaAlgorithm.

A BAM CPA works on a domain-independent level and its abstract domain, merge operator, and stop operator are defined by the domain-dependent wrapped CPA. The main feature of a BAM CPA is its transfer relation (see BamTransferRelation for details) that is able to extend the analysis of the wrapped CPA to the inter-procedural level.