Class BamCpa<ContentT extends AbstractState<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 java.lang.Object
    implements ConfigurableProgramAnalysis<JvmAbstractState<ContentT>>
    A ConfigurableProgramAnalysis for inter-procedural analysis using block abstraction memoization as described in {@see https://dl.acm.org/doi/pdf/10.1145/3368089.3409718}, 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.