ContentT - The content of the jvm states. For example, this can be a SetAbstractState of taints for taint analysis or a ValueAbstractState for value analysis.public class CpaWithBamOperators<ContentT extends AbstractState<ContentT>> extends SimpleCpa<JvmAbstractState<ContentT>>
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 and Description |
|---|
CpaWithBamOperators(ConfigurableProgramAnalysis<JvmAbstractState<ContentT>> intraproceduralCpa,
ReduceOperator<ContentT> reduce,
ExpandOperator<ContentT> expand,
RebuildOperator rebuild)
Create a CPA with BAM operators from the intra-procedural
ConfigurableProgramAnalysis
and 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.
|
| Modifier and Type | Method and Description |
|---|---|
ExpandOperator<ContentT> |
getExpandOperator()
Returns the
ExpandOperator. |
RebuildOperator |
getRebuildOperator()
Returns the
RebuildOperator. |
ReduceOperator<ContentT> |
getReduceOperator()
Returns the
ReduceOperator. |
getAbortOperator, getMergeOperator, getPrecisionAdjustment, getStopOperator, getTransferRelationpublic CpaWithBamOperators(ProgramLocationDependentTransferRelation<ContentT> transferRelation, MergeOperator<JvmAbstractState<ContentT>> merge, StopOperator<JvmAbstractState<ContentT>> stop, PrecisionAdjustment precisionAdjustment, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)
abstractDomain - a join-semilattice of AbstractStates defining the abstraction
level of the analysistransferRelation - a transfer relation specifying how successor states are computedmerge - a merge operator defining how (and whether) the older AbstractState should
be updated with the newly discovered AbstractStatestop - a stop operator deciding whether the successor state should be added to the ReachedSet based on the content of the latterprecisionAdjustment - a precision adjustment selecting the Precision for the
currently processed AbstractState considering the ReachedSet contentreduce - 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 callpublic CpaWithBamOperators(ConfigurableProgramAnalysis<JvmAbstractState<ContentT>> intraproceduralCpa, ReduceOperator<ContentT> reduce, ExpandOperator<ContentT> expand, RebuildOperator rebuild)
ConfigurableProgramAnalysis
and the additional BAM operators.intraproceduralCpa - an intra-procedural ConfigurableProgramAnalysisreduce - 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 callpublic ReduceOperator<ContentT> getReduceOperator()
ReduceOperator.public ExpandOperator<ContentT> getExpandOperator()
ExpandOperator.public RebuildOperator getRebuildOperator()
RebuildOperator.