Package it.unive.lisa.interprocedural
Class CallGraphBasedAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>
- java.lang.Object
-
- it.unive.lisa.interprocedural.CallGraphBasedAnalysis<A,H,V>
-
- Type Parameters:
A- The abstract state of the analysisH- The heap domainV- The value domain
- All Implemented Interfaces:
it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V>
- Direct Known Subclasses:
ContextBasedAnalysis
public abstract class CallGraphBasedAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>> extends java.lang.Object implements it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V>An interprocedural analysis based on a call graph.
-
-
Constructor Summary
Constructors Constructor Description CallGraphBasedAnalysis()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidinit(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph)protected it.unive.lisa.analysis.AnalysisState<A,H,V>prepareEntryStateOfEntryPoint(it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.program.cfg.CFG cfg)Prepare and entry state for the analysis of a method by renaming parameters.it.unive.lisa.program.cfg.statement.call.Callresolve(it.unive.lisa.program.cfg.statement.call.UnresolvedCall unresolvedCall)
-
-
-
Method Detail
-
init
public final void init(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph) throws it.unive.lisa.interprocedural.InterproceduralAnalysisException- Specified by:
initin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.interprocedural.InterproceduralAnalysisException
-
resolve
public final it.unive.lisa.program.cfg.statement.call.Call resolve(it.unive.lisa.program.cfg.statement.call.UnresolvedCall unresolvedCall) throws it.unive.lisa.interprocedural.callgraph.CallResolutionException- Specified by:
resolvein interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A,H,V>,H extends it.unive.lisa.analysis.heap.HeapDomain<H>,V extends it.unive.lisa.analysis.value.ValueDomain<V>>- Throws:
it.unive.lisa.interprocedural.callgraph.CallResolutionException
-
prepareEntryStateOfEntryPoint
protected final it.unive.lisa.analysis.AnalysisState<A,H,V> prepareEntryStateOfEntryPoint(it.unive.lisa.analysis.AnalysisState<A,H,V> entryState, it.unive.lisa.program.cfg.CFG cfg) throws it.unive.lisa.analysis.SemanticException
Prepare and entry state for the analysis of a method by renaming parameters.- Parameters:
entryState- the initial entry statecfg- the CFG of the method- Returns:
- the entry state with the right parameter binding
- Throws:
it.unive.lisa.analysis.SemanticException- if the analysis fails
-
-