Package it.unive.lisa.interprocedural
Class ContextBasedAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V,T>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>>
- java.lang.Object
-
- it.unive.lisa.interprocedural.CallGraphBasedAnalysis<A,H,V,T>
-
- it.unive.lisa.interprocedural.ContextBasedAnalysis<A,H,V,T>
-
- Type Parameters:
A
- the abstract state of the analysisH
- the heap domainV
- the value domainT
- the type domain
- All Implemented Interfaces:
it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V,T>
public class ContextBasedAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V,T>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>,T extends it.unive.lisa.analysis.value.TypeDomain<T>> extends CallGraphBasedAnalysis<A,H,V,T>
A context sensitive interprocedural analysis. The context sensitivity is tuned by the kind ofContextSensitivityToken
used.
-
-
Field Summary
-
Fields inherited from class it.unive.lisa.interprocedural.CallGraphBasedAnalysis
app, callgraph, policy
-
-
Constructor Summary
Constructors Constructor Description ContextBasedAnalysis()
Builds the analysis, usingSingleScopeToken
s.ContextBasedAnalysis(ContextSensitivityToken token)
Builds the analysis.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
fixpoint(it.unive.lisa.analysis.AnalysisState<A,H,V,T> entryState, java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet, int wideningThreshold)
it.unive.lisa.analysis.AnalysisState<A,H,V,T>
getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A,H,V,T> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters, it.unive.lisa.analysis.StatementStore<A,H,V,T> expressions)
java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,H,V,T>>
getAnalysisResultsOf(it.unive.lisa.program.cfg.CFG cfg)
-
Methods inherited from class it.unive.lisa.interprocedural.CallGraphBasedAnalysis
getAbstractResultOf, init, prepareEntryStateOfEntryPoint, resolve
-
-
-
-
Constructor Detail
-
ContextBasedAnalysis
public ContextBasedAnalysis()
Builds the analysis, usingSingleScopeToken
s.
-
ContextBasedAnalysis
public ContextBasedAnalysis(ContextSensitivityToken token)
Builds the analysis.- Parameters:
token
- an instance of the tokens to be used to partition w.r.t. context sensitivity
-
-
Method Detail
-
fixpoint
public void fixpoint(it.unive.lisa.analysis.AnalysisState<A,H,V,T> entryState, java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet, int wideningThreshold) throws it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
- Throws:
it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
-
getAnalysisResultsOf
public java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,H,V,T>> getAnalysisResultsOf(it.unive.lisa.program.cfg.CFG cfg)
-
getAbstractResultOf
public it.unive.lisa.analysis.AnalysisState<A,H,V,T> getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A,H,V,T> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters, it.unive.lisa.analysis.StatementStore<A,H,V,T> expressions) throws it.unive.lisa.analysis.SemanticException
- Throws:
it.unive.lisa.analysis.SemanticException
-
-