Package it.unive.lisa.interprocedural
Class CallGraphBasedAnalysis<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>
-
- 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>
- Direct Known Subclasses:
ContextBasedAnalysis
public abstract class CallGraphBasedAnalysis<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 java.lang.Object implements it.unive.lisa.interprocedural.InterproceduralAnalysis<A,H,V,T>An interprocedural analysis based on a call graph.
-
-
Field Summary
Fields Modifier and Type Field Description protected it.unive.lisa.interprocedural.callgraph.CallGraphcallgraphThe call graph used to resolve method calls.protected it.unive.lisa.interprocedural.OpenCallPolicypolicyThe policy to evaluate results of open calls.protected it.unive.lisa.program.ProgramprogramThe program.
-
Constructor Summary
Constructors Constructor Description CallGraphBasedAnalysis()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description it.unive.lisa.analysis.AnalysisState<A,H,V,T>getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.OpenCall 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)voidinit(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph, it.unive.lisa.interprocedural.OpenCallPolicy policy)protected it.unive.lisa.analysis.AnalysisState<A,H,V,T>prepareEntryStateOfEntryPoint(it.unive.lisa.analysis.AnalysisState<A,H,V,T> 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 call, it.unive.lisa.util.collections.externalSet.ExternalSet<it.unive.lisa.type.Type>[] types, it.unive.lisa.analysis.symbols.SymbolAliasing aliasing)
-
-
-
Field Detail
-
callgraph
protected it.unive.lisa.interprocedural.callgraph.CallGraph callgraph
The call graph used to resolve method calls.
-
program
protected it.unive.lisa.program.Program program
The program.
-
policy
protected it.unive.lisa.interprocedural.OpenCallPolicy policy
The policy to evaluate results of open calls.
-
-
Method Detail
-
init
public void init(it.unive.lisa.program.Program program, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph, it.unive.lisa.interprocedural.OpenCallPolicy policy) throws it.unive.lisa.interprocedural.InterproceduralAnalysisException- Specified by:
initin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<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>>- Throws:
it.unive.lisa.interprocedural.InterproceduralAnalysisException
-
resolve
public it.unive.lisa.program.cfg.statement.call.Call resolve(it.unive.lisa.program.cfg.statement.call.UnresolvedCall call, it.unive.lisa.util.collections.externalSet.ExternalSet<it.unive.lisa.type.Type>[] types, it.unive.lisa.analysis.symbols.SymbolAliasing aliasing) 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,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>>- Throws:
it.unive.lisa.interprocedural.callgraph.CallResolutionException
-
prepareEntryStateOfEntryPoint
protected it.unive.lisa.analysis.AnalysisState<A,H,V,T> prepareEntryStateOfEntryPoint(it.unive.lisa.analysis.AnalysisState<A,H,V,T> 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
-
getAbstractResultOf
public it.unive.lisa.analysis.AnalysisState<A,H,V,T> getAbstractResultOf(it.unive.lisa.program.cfg.statement.call.OpenCall 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
- Specified by:
getAbstractResultOfin interfaceit.unive.lisa.interprocedural.InterproceduralAnalysis<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>>- Throws:
it.unive.lisa.analysis.SemanticException
-
-