class DataFlowAnalysis[Data, Environment <: DataFlowEnvironment[Data, Environment]] extends AnyRef
Performs structural data flow analysis based on the results of a StructuralAnalysis. In more detail, this means that the control tree produced by the StructuralAnalysis is traversed recursively in a depth-first manner. Individual regions are processed by piping an Environment through their nodes and joining the environments where paths meet up. Thus, the individual flow functions defined at the statement PCs of a method are combined using region-type-specific patterns to effectively act as a flow function of the entire region, which is then processed itself due to the recursive nature of the algorithm.
- Source
- DataFlowAnalysis.scala
- See also
StructuralAnalysis, Environment
- Alphabetic
- By Inheritance
- DataFlowAnalysis
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new DataFlowAnalysis(controlTree: ControlTree, superFlowGraph: SuperFlowGraph, highSoundness: Boolean)
- controlTree
The control tree from the structural analysis.
- superFlowGraph
The super flow graph from the structural analysis
- highSoundness
Whether to use high soundness mode or not. Currently, this influences the handling of loops, i.e. whether they are approximated by one execution of the loop body (low soundness) or via a top value on all variables in the method (high soundness).
Type Members
- type FlowFunction = (Environment) => Environment
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- def compute(flowFunctionByPc: Map[Int, FlowFunction])(startEnv: Environment): Environment
Computes the resulting environment after the data flow analysis.
Computes the resulting environment after the data flow analysis.
- flowFunctionByPc
A mapping from PC to the flow functions to be used
- startEnv
The base environment which is piped into the first region to be processed.
- returns
The resulting Environment after execution of all flow functions using the region hierarchy given in the control tree.
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated @Deprecated
- Deprecated