Trait

org.opalj.ai.dataflow

DataFlowProblem

Related Doc: package dataflow

Permalink

trait DataFlowProblem[Source, P] extends AnyRef

Characterizes a data-flow problem. The characterization consists of the specification of the problem as well as the selection of the solver.

I.e., tries to find paths from the identified sources to the identified sinks.

Overall Initialization

Overall initialization is done in multiple steps.

  1. The parameters are checked.
  2. The parameters of the analysis are set.
  3. The project is initialized by the framework and also set.
  4. Initialize sourceValues and sinkInstructions (These methods needs to be overridden by your subclass.)
  5. Call solve. After you have called solve you are no longer allowed to change the project or the sources and sinks.
Source
DataFlowProblem.scala
Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DataFlowProblem
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. case class CallResult(receiver: TaintInformation, parameters: IndexedSeq[TaintInformation], result: (DomainValue) ⇒ TaintInformation) extends Product with Serializable

    Permalink
  2. abstract type DomainValue <: AnyRef

    Permalink
  3. case class FieldWrite(declaringClassType: ReferenceType, name: String, fieldType: Type, context: Method, caller: TaintInformation, value: TaintInformation, receiver: TaintInformation) extends Product with Serializable

    Permalink
  4. case class Invoke(declaringClassType: ReferenceType, name: String, descriptor: MethodDescriptor, context: Method, caller: TaintInformation, receiver: TaintInformation, parameters: IndexedSeq[TaintInformation]) extends Product with Serializable

    Permalink
  5. type OnCallTaintProcessor = PartialFunction[Invoke, CallResult]

    Permalink
  6. type OnWriteTaintProcessor = PartialFunction[FieldWrite, (DomainValue) ⇒ TaintInformation]

    Permalink
  7. trait TaintInformation extends AnyRef

    Permalink

    Encapsultates taint information about a(n implicit) value.

    Encapsultates taint information about a(n implicit) value.

    Attributes
    protected[this]
  8. trait TaintedValue extends TaintInformation

    Permalink

    Representation of a tainted value.

    Representation of a tainted value.

    Attributes
    protected[this]

Abstract Value Members

  1. abstract def ValueIsTainted: (DomainValue) ⇒ TaintInformation

    Permalink

    Returns a factory method that – given a DomainValue – creates a TaintedValue object that encapsulates the information that the value is tainted.

  2. abstract def doSolve(): String

    Permalink
  3. abstract def initializeSourcesAndSinks(): Unit

    Permalink
  4. abstract val p: P

    Permalink
  5. abstract val project: Project[Source]

    Permalink
  6. abstract def sinkInstructions(): Map[Method, Set[br.PC]]

    Permalink

    Identifies the program counters (PCs) of those instructions that are sinks.

    Identifies the program counters (PCs) of those instructions that are sinks.

    The returned map must not change, after solve was called!

    Note

    The methods have to belong to the project.

    See also

    org.opalj.ai.dataflow.spec.DataFlowProblemSpecification for the easy creation of the sinkInstructions map.

  7. abstract def sourceValues(): Map[Method, Set[ValueOrigin]]

    Permalink

    Identifies the values that we want to track (by means of the origin of the respective value) per relevant method.

    Identifies the values that we want to track (by means of the origin of the respective value) per relevant method.

    The returned map must not change, after solve was called!

    Note

    The methods have to belong to the project.

    See also

    org.opalj.ai.dataflow.spec.DataFlowProblemSpecification for the easy creation of the sourcesValues map.

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. object NotTainted extends TaintInformation with Product with Serializable

    Permalink

    The (implicitly referred to) value is not tainted.

  5. object Tainted

    Permalink

    Extractor to match tainted values.

  6. val ValueIsNotTainted: (DomainValue) ⇒ TaintInformation

    Permalink

    Factory method that – given a DomainValue – creates a TaintInformation object that encapsulates the information that the value is not tainted.

  7. def analyzeFeasability(): Unit

    Permalink
    Attributes
    protected[this]
  8. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  9. def call(f: OnCallTaintProcessor): Unit

    Permalink
  10. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  11. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  12. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  13. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  14. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  15. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  17. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. var onCallTaintProcessors: List[OnCallTaintProcessor]

    Permalink
    Attributes
    protected[this]
  21. var onWriteTaintProcessors: List[OnWriteTaintProcessor]

    Permalink
    Attributes
    protected[this]
  22. def solve(): String

    Permalink

    Tries to find paths from the sources to the sinks.

  23. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  24. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  28. def write(f: OnWriteTaintProcessor): Unit

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped