Package proguard.analysis.cpa.bam
Class CpaWithBamOperators<ContentT extends AbstractState<ContentT>>
- java.lang.Object
-
- proguard.analysis.cpa.defaults.SimpleCpa<JvmAbstractState<ContentT>>
-
- proguard.analysis.cpa.bam.CpaWithBamOperators<ContentT>
-
- Type Parameters:
ContentT- The content of the jvm states. For example, this can be aSetAbstractStateof taints for taint analysis or aValueAbstractStatefor value analysis.
- All Implemented Interfaces:
ConfigurableProgramAnalysis<JvmAbstractState<ContentT>>
public class CpaWithBamOperators<ContentT extends AbstractState<ContentT>> extends SimpleCpa<JvmAbstractState<ContentT>>
A domain dependent analysis that can be wrapped with aBamCpato be extended inter-procedurally.Compared to a standard
ConfigurableProgramAnalysis, this is extended with three operators:- The reduce operator discards from the entry abstract state of a procedure the unnecessary information (e.g. local variables of the caller).
- The expand operator restores the removed information.
- The rebuild operator avoids collision of program identifiers while returning from a procedure call (e.g. renaming variables).
-
-
Constructor Summary
Constructors Constructor Description CpaWithBamOperators(ConfigurableProgramAnalysis<JvmAbstractState<ContentT>> intraproceduralCpa, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)Create a CPA with BAM operators from the intra-proceduralConfigurableProgramAnalysisand the additional BAM operators.CpaWithBamOperators(ProgramLocationDependentTransferRelation<ContentT> transferRelation, MergeOperator<JvmAbstractState<ContentT>> merge, StopOperator<JvmAbstractState<ContentT>> stop, PrecisionAdjustment precisionAdjustment, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)Create a CPA with BAM operators from the abstract domain and the operators.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ExpandOperator<ContentT>getExpandOperator()Returns theExpandOperator.RebuildOperatorgetRebuildOperator()Returns theRebuildOperator.ReduceOperator<ContentT>getReduceOperator()Returns theReduceOperator.-
Methods inherited from class proguard.analysis.cpa.defaults.SimpleCpa
getAbortOperator, getMergeOperator, getPrecisionAdjustment, getStopOperator, getTransferRelation
-
-
-
-
Constructor Detail
-
CpaWithBamOperators
public CpaWithBamOperators(ProgramLocationDependentTransferRelation<ContentT> transferRelation, MergeOperator<JvmAbstractState<ContentT>> merge, StopOperator<JvmAbstractState<ContentT>> stop, PrecisionAdjustment precisionAdjustment, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the abstract domain and the operators.- Parameters:
abstractDomain- a join-semilattice ofAbstractStates defining the abstraction level of the analysistransferRelation- a transfer relation specifying how successor states are computedmerge- a merge operator defining how (and whether) the olderAbstractStateshould be updated with the newly discoveredAbstractStatestop- a stop operator deciding whether the successor state should be added to theReachedSetbased on the content of the latterprecisionAdjustment- a precision adjustment selecting thePrecisionfor the currently processedAbstractStateconsidering theReachedSetcontentreduce- a reduce operator discarding from the entry abstract state of procedures the unnecessary informationexpand- an expand operator restoring the information removed during reductionrebuild- a rebuild operator avoiding identifiers collision while returning from a procedure call
-
CpaWithBamOperators
public CpaWithBamOperators(ConfigurableProgramAnalysis<JvmAbstractState<ContentT>> intraproceduralCpa, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)
Create a CPA with BAM operators from the intra-proceduralConfigurableProgramAnalysisand the additional BAM operators.- Parameters:
intraproceduralCpa- an intra-proceduralConfigurableProgramAnalysisreduce- a reduce operator discarding from the entry abstract state of procedures the unnecessary informationexpand- an expand operator restoring the information removed during reductionrebuild- a rebuild operator avoiding identifiers collision while returning from a procedure call
-
-
Method Detail
-
getReduceOperator
public ReduceOperator<ContentT> getReduceOperator()
Returns theReduceOperator.
-
getExpandOperator
public ExpandOperator<ContentT> getExpandOperator()
Returns theExpandOperator.
-
getRebuildOperator
public RebuildOperator getRebuildOperator()
Returns theRebuildOperator.
-
-