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 a
BamCpa to 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
ConstructorsConstructorDescriptionCpaWithBamOperators(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
Modifier and TypeMethodDescriptionReturns theExpandOperator.Returns theRebuildOperator.Returns theReduceOperator.Methods inherited from class proguard.analysis.cpa.defaults.SimpleCpa
getAbortOperator, getMergeOperator, getPrecisionAdjustment, getStopOperator, getTransferRelation
-
Constructor Details
-
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 Details
-
getReduceOperator
Returns theReduceOperator. -
getExpandOperator
Returns theExpandOperator. -
getRebuildOperator
Returns theRebuildOperator.
-