Packages

p

tip

analysis

package analysis

Ordering
  1. Alphabetic
Visibility
  1. Public
  2. All

Type Members

  1. case class AllocVariable(alloc: AAlloc) extends StTerm with Var[StTerm] with Product with Serializable

    A term variable that represents an alloc in the program.

  2. trait Analysis[+R] extends AnyRef

    Trait for program analyses.

    Trait for program analyses.

    R

    the type of the analysis result

  3. class AndersenAnalysis extends DepthFirstAstVisitor[Unit] with PointsToAnalysis
  4. abstract class AvailableExpAnalysis extends FlowSensitiveAnalysis

    Base class for available expressions analysis.

  5. class AvailableExpAnalysisSimpleSolver extends AvailableExpAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with ForwardDependencies

    Available expressions analysis that uses the simple fipoint solver.

  6. class AvailableExpAnalysisWorklistSolver extends AvailableExpAnalysis with SimpleWorklistFixpointSolver[CfgNode] with ForwardDependencies

    Available expressions analysis that uses the worklist solver.

  7. trait BackwardDependencies extends Dependencies[CfgNode]

    Dependency methods for backward analyses.

  8. trait CallContext extends AnyRef

    Base trait for call contexts.

  9. trait CallContextFunctions[C <: CallContext] extends AnyRef

    Functions for creating call contexts.

    Functions for creating call contexts.

    C

    the type for call contexts

  10. case class CallStringContext(cs: List[CfgCallNode]) extends CallContext with Product with Serializable

    Call context for call strings.

  11. trait CallStringFunctions extends CallContextFunctions[CallStringContext]

    Call context construction for call strings.

  12. abstract class CallStringValueAnalysis[L <: LatticeWithOps] extends ContextSensitiveValueAnalysis[CallStringContext] with CallStringFunctions

    Context-sensitive value analysis with call-string approach.

  13. trait ContextSensitiveForwardDependencies[C <: CallContext] extends Dependencies[(C, CfgNode)]

    Variant of ForwardDependencies for context-sensitive interprocedural analysis.

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

  15. class ControlFlowAnalysis extends DepthFirstAstVisitor[Unit] with Analysis[Map[AstNode, Set[AFunDeclaration]]]

    Control flow analysis.

  16. trait CopyConstantPropagationAnalysisFunctions extends IDEAnalysis[ADeclaration, FlatLattice[Int]]

    Micro-transfer-functions for copy-constant-propagation analysis.

  17. class CopyConstantPropagationIDEAnalysis extends IDESolver[ADeclaration, FlatLattice[Int]] with CopyConstantPropagationAnalysisFunctions

    Copy-constant-propagation analysis using IDE solver.

  18. class CopyConstantPropagationSummaryAnalysis extends SummarySolver[ADeclaration, FlatLattice[Int]] with CopyConstantPropagationAnalysisFunctions

    Copy-constant-propagation analysis using summary solver.

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

    tip.ast.AstNodeData

  20. class DeclarationError extends TipProgramException
  21. trait Dependencies[N] extends AnyRef

    Dependency methods for worklist-based analyses.

  22. abstract class FlowSensitiveAnalysis extends Analysis[Any]

    A flow-sensitive analysis.

  23. trait ForwardDependencies extends Dependencies[CfgNode]

    Dependency methods for forward analyses.

  24. case class FreshVariable(id: Int = 0) extends StTerm with Var[StTerm] with Product with Serializable

    A fresh term variable.

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

  26. trait FunctionalFunctions extends CallContextFunctions[FunctionalContext]

    Call context construction for functional approach.

  27. abstract class FunctionalValueAnalysis[L <: LatticeWithOps] extends ContextSensitiveValueAnalysis[FunctionalContext] with FunctionalFunctions

    Context-sensitive value analysis with functional approach.

  28. case class IdentifierVariable(id: ADeclaration) extends StTerm with Var[StTerm] with Product with Serializable

    A term variable that represents an identifier in the program.

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

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

  31. trait InterprocValueAnalysisMisc[N] extends ValueAnalysisMisc

    Common functionality for interprocedural analysis.

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

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

  34. trait InterproceduralForwardDependencies extends Dependencies[CfgNode]

    Variant of ForwardDependencies for interprocedural analysis.

  35. trait IntervalAnalysisWidening extends ValueAnalysisMisc with Dependencies[CfgNode]
  36. abstract class IntraprocValueAnalysisSimpleSolver[L <: LatticeWithOps] extends SimpleValueAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with ForwardDependencies

    Intraprocedural value analysis that uses tip.solvers.SimpleFixpointSolver.

  37. abstract class IntraprocValueAnalysisWorklistSolver[L <: LatticeWithOps] extends SimpleValueAnalysis with SimpleWorklistFixpointSolver[CfgNode] with ForwardDependencies

    Intraprocedural value analysis that uses tip.solvers.SimpleWorklistFixpointSolver.

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

  39. abstract class IntraprocValueAnalysisWorklistSolverWithReachabilityAndPropagation[L <: LatticeWithOps] extends LiftedValueAnalysis[IntraproceduralProgramCfg] with LiftedValueAnalysisMisc with WorklistFixpointPropagationSolver[CfgNode] with ForwardDependencies

    Intraprocedural value analysis that uses tip.solvers.WorklistFixpointPropagationSolver.

  40. 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".

  41. trait LiftedValueAnalysisMisc extends ValueAnalysisMisc

    Functionality for basic analyses with lifted state lattice.

  42. abstract class LiveVarsAnalysis extends FlowSensitiveAnalysis

    Base class for live variables analysis.

  43. class LiveVarsAnalysisSimpleSolver extends LiveVarsAnalysis with SimpleMapLatticeFixpointSolver[CfgNode] with BackwardDependencies

    Live variables analysis that uses the simple fixpoint solver.

  44. class LiveVarsAnalysisWorklistSolver extends LiveVarsAnalysis with SimpleWorklistFixpointSolver[CfgNode] with BackwardDependencies

    Live variables analysis that uses the worklist solver.

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

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

  47. trait PossiblyUninitializedVarsAnalysisFunctions extends IDEAnalysis[ADeclaration, TwoElementLattice]

    Micro-transfer-functions for possibly-uninitialized variables analysis.

  48. class PossiblyUninitializedVarsIDEAnalysis extends IDESolver[ADeclaration, TwoElementLattice] with PossiblyUninitializedVarsAnalysisFunctions

    Possibly-uninitialized variables analysis using IDE solver.

  49. class PossiblyUninitializedVarsSummaryAnalysis extends SummarySolver[ADeclaration, TwoElementLattice] with PossiblyUninitializedVarsAnalysisFunctions

    Possibly-uninitialized variables analysis using summary solver.

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

  51. abstract class SimpleValueAnalysis extends FlowSensitiveAnalysis with ValueAnalysisMisc

    Base class for value analysis with simple (non-lifted) lattice.

  52. sealed trait StTerm extends AnyRef

    Terms used in unification.

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

  54. trait TaintAnalysisFunctions extends IDEAnalysis[ADeclaration, TwoElementLattice]

    Micro-transfer-functions for taint analysis.

  55. class TaintIDEAnalysis extends IDESolver[ADeclaration, TwoElementLattice] with TaintAnalysisFunctions

    Taint analysis using IDE solver.

  56. class TaintSummaryAnalysis extends SummarySolver[ADeclaration, TwoElementLattice] with TaintAnalysisFunctions

    Taint analysis using summary solver.

  57. 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 of TypeAnalysis obtain its value implicitly: The call to new TypeAnalysis in Tip.scala does not explicitly provide this parameter, but it is in scope of implicit val declData: TypeData = new DeclarationAnalysis(programNode).analyze(). The TIP implementation uses implicit parameters many places to provide easy access to the declaration information produced by DeclarationAnalysis and the type information produced by TypeAnalysis. For more information about implicit parameters in Scala, see https://docs.scala-lang.org/tour/implicit-parameters.html.

  58. trait ValueAnalysisMisc extends AnyRef

    General definitions for value analysis.

Value Members

  1. object ConstantPropagationAnalysis
  2. object FlowSensitiveAnalysis

    A factory to create a specific flow-sensitive analysis that matches the options.

  3. object Fresh

    Counter for producing fresh IDs.

  4. object IntervalAnalysis
  5. object SignAnalysis

Ungrouped