Class ContextBasedAnalysis<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>>

  • Type Parameters:
    A - the abstract state of the analysis
    H - the heap domain
    V - the value domain
    All Implemented Interfaces:
    it.unive.lisa.interprocedural.InterproceduralAnalysis<A,​H,​V>

    public class ContextBasedAnalysis<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 CallGraphBasedAnalysis<A,​H,​V>
    A context sensitive interprocedural analysis. The context sensitivity is tuned by the kind of ContextSensitivityToken used.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void fixpoint​(it.unive.lisa.analysis.AnalysisState<A,​H,​V> 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> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.CFGCall call, it.unive.lisa.analysis.AnalysisState<A,​H,​V> entryState, it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters)  
      java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V>> getAnalysisResultsOf​(it.unive.lisa.program.cfg.CFG cfg)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ContextBasedAnalysis

        public ContextBasedAnalysis()
        Builds the analysis, using SingleScopeTokens.
      • 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 final void fixpoint​(it.unive.lisa.analysis.AnalysisState<A,​H,​V> 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 final java.util.Collection<it.unive.lisa.analysis.CFGWithAnalysisResults<A,​H,​V>> getAnalysisResultsOf​(it.unive.lisa.program.cfg.CFG cfg)
      • getAbstractResultOf

        public final it.unive.lisa.analysis.AnalysisState<A,​H,​V> getAbstractResultOf​(it.unive.lisa.program.cfg.statement.call.CFGCall call,
                                                                                                 it.unive.lisa.analysis.AnalysisState<A,​H,​V> entryState,
                                                                                                 it.unive.lisa.analysis.lattices.ExpressionSet<it.unive.lisa.symbolic.SymbolicExpression>[] parameters)
                                                                                          throws it.unive.lisa.analysis.SemanticException
        Throws:
        it.unive.lisa.analysis.SemanticException