Packages

case class Cfg(entryNode: Option[CfgNode] = None, edges: List[CfgEdge] = List(), fringe: List[(CfgNode, CfgEdgeType)] = List(), labeledNodes: Map[String, CfgNode] = Map(), breaks: List[CfgNode] = List(), continues: List[CfgNode] = List(), caseLabels: List[CfgNode] = List(), jumpsToLabel: List[(CfgNode, String)] = List()) extends Product with Serializable

A control flow graph that is under construction, consisting of:

entryNode

the control flow graph's first node, that is, the node to which a CFG that appends this CFG should attach itself to.

edges

control flow edges between nodes of the code property graph.

fringe

nodes of the CFG for which an outgoing edge type is already known but the destination node is not. These nodes are connected when another CFG is appended to this CFG. In addition to these three core building blocks, we store labels and jump statements that have not been resolved and may be resolvable as parent sub trees or sibblings are translated.

labeledNodes

labels contained in the abstract syntax tree from which this CPG was generated

breaks

unresolved breaks collected along the way

continues

unresolved continues collected along the way

caseLabels

labels beginning with "case"

jumpsToLabel

unresolved gotos, labeled break and labeld continues collected along the way

Linear Supertypes
Serializable, Product, Equals, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Cfg
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Cfg(entryNode: Option[CfgNode] = None, edges: List[CfgEdge] = List(), fringe: List[(CfgNode, CfgEdgeType)] = List(), labeledNodes: Map[String, CfgNode] = Map(), breaks: List[CfgNode] = List(), continues: List[CfgNode] = List(), caseLabels: List[CfgNode] = List(), jumpsToLabel: List[(CfgNode, String)] = List())

    entryNode

    the control flow graph's first node, that is, the node to which a CFG that appends this CFG should attach itself to.

    edges

    control flow edges between nodes of the code property graph.

    fringe

    nodes of the CFG for which an outgoing edge type is already known but the destination node is not. These nodes are connected when another CFG is appended to this CFG. In addition to these three core building blocks, we store labels and jump statements that have not been resolved and may be resolvable as parent sub trees or sibblings are translated.

    labeledNodes

    labels contained in the abstract syntax tree from which this CPG was generated

    breaks

    unresolved breaks collected along the way

    continues

    unresolved continues collected along the way

    caseLabels

    labels beginning with "case"

    jumpsToLabel

    unresolved gotos, labeled break and labeld continues collected along the way

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. def ++(other: Cfg): Cfg

    Create a new CFG in which other is appended to this CFG.

    Create a new CFG in which other is appended to this CFG. All nodes of the fringe are connected to other's entry node and the new fringe is other's fringe. The diffgraphs, jumps, and labels are the sum of those present in this and other.

  4. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. val breaks: List[CfgNode]
  7. val caseLabels: List[CfgNode]
  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
  9. val continues: List[CfgNode]
  10. val edges: List[CfgEdge]
  11. val entryNode: Option[CfgNode]
  12. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  13. val fringe: List[(CfgNode, CfgEdgeType)]
  14. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  15. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  16. val jumpsToLabel: List[(CfgNode, String)]
  17. val labeledNodes: Map[String, CfgNode]
  18. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  19. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  20. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @HotSpotIntrinsicCandidate()
  21. def productElementNames: Iterator[String]
    Definition Classes
    Product
  22. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  23. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  24. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  25. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  26. def withFringeEdgeType(cfgEdgeType: CfgEdgeType): Cfg
  27. def withResolvedJumpToLabel(): Cfg

    Upon completing traversal of the abstract syntax tree, this method creates CFG edges between jumps like gotos, labeled breaks, labeled continues and respective labels.

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped