Class ModularWorstCaseAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>

  • Type Parameters:
    A - the AbstractState of the analysis
    All Implemented Interfaces:
    it.unive.lisa.interprocedural.InterproceduralAnalysis<A>

    public class ModularWorstCaseAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
    extends java.lang.Object
    implements it.unive.lisa.interprocedural.InterproceduralAnalysis<A>
    A worst case modular analysis were all cfg calls are treated as open calls.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void fixpoint​(it.unive.lisa.analysis.AnalysisState<A> entryState, java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet, it.unive.lisa.conf.FixpointConfiguration conf)  
      it.unive.lisa.analysis.AnalysisState<A> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A> entryState, it.unive.lisa.analysis.lattices.ExpressionSet[] parameters, it.unive.lisa.analysis.StatementStore<A> expressions)  
      it.unive.lisa.analysis.AnalysisState<A> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.OpenCall call, it.unive.lisa.analysis.AnalysisState<A> entryState, it.unive.lisa.analysis.lattices.ExpressionSet[] parameters, it.unive.lisa.analysis.StatementStore<A> expressions)  
      java.util.Collection<it.unive.lisa.analysis.AnalyzedCFG<A>> getAnalysisResultsOf​(it.unive.lisa.program.cfg.CFG cfg)  
      it.unive.lisa.interprocedural.FixpointResults<A> getFixpointResults()  
      void init​(it.unive.lisa.program.Application app, it.unive.lisa.interprocedural.callgraph.CallGraph callgraph, it.unive.lisa.interprocedural.OpenCallPolicy policy)  
      boolean needsCallGraph()  
      it.unive.lisa.program.cfg.statement.call.Call resolve​(it.unive.lisa.program.cfg.statement.call.UnresolvedCall call, java.util.Set<it.unive.lisa.type.Type>[] types, it.unive.lisa.analysis.symbols.SymbolAliasing aliasing)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface it.unive.lisa.interprocedural.InterproceduralAnalysis

        returnsVoid, scope, unscope
    • Constructor Detail

      • ModularWorstCaseAnalysis

        public ModularWorstCaseAnalysis()
        Builds the interprocedural analysis.
    • Method Detail

      • needsCallGraph

        public boolean needsCallGraph()
        Specified by:
        needsCallGraph in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
      • fixpoint

        public void fixpoint​(it.unive.lisa.analysis.AnalysisState<A> entryState,
                             java.lang.Class<? extends it.unive.lisa.util.collections.workset.WorkingSet<it.unive.lisa.program.cfg.statement.Statement>> fixpointWorkingSet,
                             it.unive.lisa.conf.FixpointConfiguration conf)
                      throws it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
        Specified by:
        fixpoint in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
        Throws:
        it.unive.lisa.util.datastructures.graph.algorithms.FixpointException
      • getAnalysisResultsOf

        public java.util.Collection<it.unive.lisa.analysis.AnalyzedCFG<A>> getAnalysisResultsOf​(it.unive.lisa.program.cfg.CFG cfg)
        Specified by:
        getAnalysisResultsOf in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
      • getAbstractResultOf

        public it.unive.lisa.analysis.AnalysisState<A> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.CFGCall call,
                                                                           it.unive.lisa.analysis.AnalysisState<A> entryState,
                                                                           it.unive.lisa.analysis.lattices.ExpressionSet[] parameters,
                                                                           it.unive.lisa.analysis.StatementStore<A> expressions)
                                                                    throws it.unive.lisa.analysis.SemanticException
        Specified by:
        getAbstractResultOf in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • getAbstractResultOf

        public it.unive.lisa.analysis.AnalysisState<A> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.OpenCall call,
                                                                           it.unive.lisa.analysis.AnalysisState<A> entryState,
                                                                           it.unive.lisa.analysis.lattices.ExpressionSet[] parameters,
                                                                           it.unive.lisa.analysis.StatementStore<A> expressions)
                                                                    throws it.unive.lisa.analysis.SemanticException
        Specified by:
        getAbstractResultOf in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
        Throws:
        it.unive.lisa.analysis.SemanticException
      • init

        public void init​(it.unive.lisa.program.Application app,
                         it.unive.lisa.interprocedural.callgraph.CallGraph callgraph,
                         it.unive.lisa.interprocedural.OpenCallPolicy policy)
                  throws it.unive.lisa.interprocedural.InterproceduralAnalysisException
        Specified by:
        init in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
        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,
                                                                     java.util.Set<it.unive.lisa.type.Type>[] types,
                                                                     it.unive.lisa.analysis.symbols.SymbolAliasing aliasing)
                                                              throws it.unive.lisa.interprocedural.callgraph.CallResolutionException
        Specified by:
        resolve in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>
        Throws:
        it.unive.lisa.interprocedural.callgraph.CallResolutionException
      • getFixpointResults

        public it.unive.lisa.interprocedural.FixpointResults<A> getFixpointResults()
        Specified by:
        getFixpointResults in interface it.unive.lisa.interprocedural.InterproceduralAnalysis<A extends it.unive.lisa.analysis.AbstractState<A>>