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

  • Type Parameters:
    A - the abstract state of the analysis
    H - the heap domain
    V - the value domain
    T - 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 of ContextSensitivityToken used.
    • 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 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