package analysis
- Alphabetic
- Public
- All
Type Members
-
case class
AllocVariable(alloc: AAlloc) extends StTerm with Var[StTerm] with Product with Serializable
A term variable that represents an alloc in the program.
-
trait
Analysis[+R] extends AnyRef
Trait for program analyses.
Trait for program analyses.
- R
the type of the analysis result
- class AndersenAnalysis extends DepthFirstAstVisitor[Unit] with PointsToAnalysis
-
abstract
class
AvailableExpAnalysis extends FlowSensitiveAnalysis
Base class for available expressions analysis.
-
class
AvailableExpAnalysisSimpleSolver extends AvailableExpAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with ForwardDependencies
Available expressions analysis that uses the simple fipoint solver.
-
class
AvailableExpAnalysisWorklistSolver extends AvailableExpAnalysis with SimpleWorklistFixpointSolver[CfgNode] with ForwardDependencies
Available expressions analysis that uses the worklist solver.
-
trait
BackwardDependencies extends Dependencies[CfgNode]
Dependency methods for backward analyses.
-
trait
CallContext extends AnyRef
Base trait for call contexts.
-
trait
CallContextFunctions[C <: CallContext] extends AnyRef
Functions for creating call contexts.
Functions for creating call contexts.
- C
the type for call contexts
-
case class
CallStringContext(cs: List[CfgCallNode]) extends CallContext with Product with Serializable
Call context for call strings.
-
trait
CallStringFunctions extends CallContextFunctions[CallStringContext]
Call context construction for call strings.
-
abstract
class
CallStringValueAnalysis[L <: LatticeWithOps] extends ContextSensitiveValueAnalysis[CallStringContext] with CallStringFunctions
Context-sensitive value analysis with call-string approach.
-
trait
ContextSensitiveForwardDependencies[C <: CallContext] extends Dependencies[(C, CfgNode)]
Variant of ForwardDependencies for context-sensitive interprocedural analysis.
-
abstract
class
ContextSensitiveValueAnalysis[C <: CallContext] extends FlowSensitiveAnalysis with ContextSensitiveForwardDependencies[C] with MapLiftLatticeSolver[(C, CfgNode)] with WorklistFixpointPropagationSolver[(C, CfgNode)] with InterprocValueAnalysisMisc[(C, CfgNode)] with CallContextFunctions[C]
Base class for value analysis with context sensitivity and lifted lattice.
-
class
ControlFlowAnalysis extends DepthFirstAstVisitor[Unit] with Analysis[Map[AstNode, Set[AFunDeclaration]]]
Control flow analysis.
-
trait
CopyConstantPropagationAnalysisFunctions extends IDEAnalysis[ADeclaration, FlatLattice[Int]]
Micro-transfer-functions for copy-constant-propagation analysis.
-
class
CopyConstantPropagationIDEAnalysis extends IDESolver[ADeclaration, FlatLattice[Int]] with CopyConstantPropagationAnalysisFunctions
Copy-constant-propagation analysis using IDE solver.
-
class
CopyConstantPropagationSummaryAnalysis extends SummarySolver[ADeclaration, FlatLattice[Int]] with CopyConstantPropagationAnalysisFunctions
Copy-constant-propagation analysis using summary solver.
-
class
DeclarationAnalysis extends DepthFirstAstVisitor[Map[String, ADeclaration]] with Analysis[DeclarationData]
Declaration analysis, binds identifiers to their declarations.
Declaration analysis, binds identifiers to their declarations.
- See also
- class DeclarationError extends TipProgramException
-
trait
Dependencies[N] extends AnyRef
Dependency methods for worklist-based analyses.
-
abstract
class
FlowSensitiveAnalysis extends Analysis[Any]
A flow-sensitive analysis.
-
trait
ForwardDependencies extends Dependencies[CfgNode]
Dependency methods for forward analyses.
-
case class
FreshVariable(id: Int = 0) extends StTerm with Var[StTerm] with Product with Serializable
A fresh term variable.
-
case class
FunctionalContext(x: Any) extends CallContext with Product with Serializable
Call context for functional approach.
Call context for functional approach.
- x
a lattice element
-
trait
FunctionalFunctions extends CallContextFunctions[FunctionalContext]
Call context construction for functional approach.
-
abstract
class
FunctionalValueAnalysis[L <: LatticeWithOps] extends ContextSensitiveValueAnalysis[FunctionalContext] with FunctionalFunctions
Context-sensitive value analysis with functional approach.
-
case class
IdentifierVariable(id: ADeclaration) extends StTerm with Var[StTerm] with Product with Serializable
A term variable that represents an identifier in the program.
-
trait
InterprocValueAnalysisFunctions extends MapLiftLatticeSolver[CfgNode] with InterprocValueAnalysisMisc[CfgNode]
Constraint functions for value analysis (including interprocedural).
Constraint functions for value analysis (including interprocedural). This version is for the basic worklist algorithm.
-
trait
InterprocValueAnalysisFunctionsWithPropagation extends MapLiftLatticeSolver[CfgNode] with WorklistFixpointPropagationFunctions[CfgNode] with InterprocValueAnalysisMisc[CfgNode]
Constraint functions for value analysis (including interprocedural), propagation style.
Constraint functions for value analysis (including interprocedural), propagation style. This is a variant of InterprocValueAnalysisFunctions for use with tip.solvers.WorklistFixpointPropagationSolver.
-
trait
InterprocValueAnalysisMisc[N] extends ValueAnalysisMisc
Common functionality for interprocedural analysis.
-
abstract
class
InterprocValueAnalysisWorklistSolverWithReachability[L <: LatticeWithOps] extends LiftedValueAnalysis[InterproceduralProgramCfg] with LiftedValueAnalysisMisc with InterprocValueAnalysisFunctions with WorklistFixpointSolverWithReachability[CfgNode] with InterproceduralForwardDependencies
Interprocedural value analysis that uses tip.solvers.WorklistFixpointSolverWithReachability, with the entry of the main function as the only start node.
-
abstract
class
InterprocValueAnalysisWorklistSolverWithReachabilityAndPropagation[L <: LatticeWithOps] extends LiftedValueAnalysis[InterproceduralProgramCfg] with InterprocValueAnalysisFunctionsWithPropagation with WorklistFixpointPropagationSolver[CfgNode] with ForwardDependencies
Interprocedural value analysis that uses tip.solvers.WorklistFixpointPropagationSolver.
Interprocedural value analysis that uses tip.solvers.WorklistFixpointPropagationSolver. Note that this class uses tip.analysis.ForwardDependencies which has no interprocedural outdeps, and it does not use indeps.
-
trait
InterproceduralForwardDependencies extends Dependencies[CfgNode]
Variant of ForwardDependencies for interprocedural analysis.
- trait IntervalAnalysisWidening extends ValueAnalysisMisc with Dependencies[CfgNode]
-
abstract
class
IntraprocValueAnalysisSimpleSolver[L <: LatticeWithOps] extends SimpleValueAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with ForwardDependencies
Intraprocedural value analysis that uses tip.solvers.SimpleFixpointSolver.
-
abstract
class
IntraprocValueAnalysisWorklistSolver[L <: LatticeWithOps] extends SimpleValueAnalysis with SimpleWorklistFixpointSolver[CfgNode] with ForwardDependencies
Intraprocedural value analysis that uses tip.solvers.SimpleWorklistFixpointSolver.
-
abstract
class
IntraprocValueAnalysisWorklistSolverWithReachability[L <: LatticeWithOps] extends LiftedValueAnalysis[IntraproceduralProgramCfg] with LiftedValueAnalysisMisc with WorklistFixpointSolverWithReachability[CfgNode] with ForwardDependencies
Intraprocedural value analysis that uses tip.solvers.WorklistFixpointSolverWithReachability, with all function entries as start nodes.
-
abstract
class
IntraprocValueAnalysisWorklistSolverWithReachabilityAndPropagation[L <: LatticeWithOps] extends LiftedValueAnalysis[IntraproceduralProgramCfg] with LiftedValueAnalysisMisc with WorklistFixpointPropagationSolver[CfgNode] with ForwardDependencies
Intraprocedural value analysis that uses tip.solvers.WorklistFixpointPropagationSolver.
-
abstract
class
LiftedValueAnalysis[P <: ProgramCfg] extends FlowSensitiveAnalysis with MapLatticeSolver[CfgNode] with ValueAnalysisMisc
Base class for value analysis with lifted lattice, where the extra bottom element represents "unreachable".
-
trait
LiftedValueAnalysisMisc extends ValueAnalysisMisc
Functionality for basic analyses with lifted state lattice.
-
abstract
class
LiveVarsAnalysis extends FlowSensitiveAnalysis
Base class for live variables analysis.
-
class
LiveVarsAnalysisSimpleSolver extends LiveVarsAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with BackwardDependencies
Live variables analysis that uses the simple fixpoint solver.
-
class
LiveVarsAnalysisWorklistSolver extends LiveVarsAnalysis with SimpleWorklistFixpointSolver[CfgNode] with BackwardDependencies
Live variables analysis that uses the worklist solver.
-
case class
PointerRef(of: Term[StTerm]) extends StTerm with Cons[StTerm] with Product with Serializable
A constructor term that represents a pointer to another term.
-
trait
PointsToAnalysis extends Analysis[Unit]
Trait for (may-)points-to analyses.
Trait for (may-)points-to analyses. Can answer may-points-to and may-alias queries.
-
trait
PossiblyUninitializedVarsAnalysisFunctions extends IDEAnalysis[ADeclaration, TwoElementLattice]
Micro-transfer-functions for possibly-uninitialized variables analysis.
-
class
PossiblyUninitializedVarsIDEAnalysis extends IDESolver[ADeclaration, TwoElementLattice] with PossiblyUninitializedVarsAnalysisFunctions
Possibly-uninitialized variables analysis using IDE solver.
-
class
PossiblyUninitializedVarsSummaryAnalysis extends SummarySolver[ADeclaration, TwoElementLattice] with PossiblyUninitializedVarsAnalysisFunctions
Possibly-uninitialized variables analysis using summary solver.
-
class
SimpleSignAnalysis extends FlowSensitiveAnalysis
Simple intra-procedural sign analysis.
Simple intra-procedural sign analysis.
This is a specialized version of
SignAnalysis.Intraprocedural.SimpleSolver
where most of the involved traits, classes, methods, and fields have been inlined. -
abstract
class
SimpleValueAnalysis extends FlowSensitiveAnalysis with ValueAnalysisMisc
Base class for value analysis with simple (non-lifted) lattice.
-
sealed
trait
StTerm extends AnyRef
Terms used in unification.
-
class
SteensgaardAnalysis extends DepthFirstAstVisitor[Unit] with PointsToAnalysis
Steensgaard-style pointer analysis.
Steensgaard-style pointer analysis. The analysis associates an StTerm with each variable declaration and expression node in the AST. It is implemented using tip.solvers.UnionFindSolver.
-
trait
TaintAnalysisFunctions extends IDEAnalysis[ADeclaration, TwoElementLattice]
Micro-transfer-functions for taint analysis.
-
class
TaintIDEAnalysis extends IDESolver[ADeclaration, TwoElementLattice] with TaintAnalysisFunctions
Taint analysis using IDE solver.
-
class
TaintSummaryAnalysis extends SummarySolver[ADeclaration, TwoElementLattice] with TaintAnalysisFunctions
Taint analysis using summary solver.
-
class
TypeAnalysis extends DepthFirstAstVisitor[Unit] with Analysis[TypeData]
Unification-based type analysis.
Unification-based type analysis. The analysis associates a tip.types.Type with each variable declaration and expression node in the AST. It is implemented using tip.solvers.UnionFindSolver.
To novice Scala programmers: The parameter
declData
is declared as "implicit", which means that invocations ofTypeAnalysis
obtain its value implicitly: The call tonew TypeAnalysis
in Tip.scala does not explicitly provide this parameter, but it is in scope ofimplicit val declData: TypeData = new DeclarationAnalysis(programNode).analyze()
. The TIP implementation uses implicit parameters many places to provide easy access to the declaration information produced byDeclarationAnalysis
and the type information produced byTypeAnalysis
. For more information about implicit parameters in Scala, see https://docs.scala-lang.org/tour/implicit-parameters.html. -
trait
ValueAnalysisMisc extends AnyRef
General definitions for value analysis.
Value Members
- object ConstantPropagationAnalysis
-
object
FlowSensitiveAnalysis
A factory to create a specific flow-sensitive analysis that matches the options.
-
object
Fresh
Counter for producing fresh IDs.
- object IntervalAnalysis
- object SignAnalysis