Package-level declarations
Types
This edge class defines a flow of data between start and end. The flow must have a callingContext which allows for a context-sensitive dataflow analysis. This edge can also have a certain granularity.
An edge in a Control Dependence Graph (CDG). Denotes that the start node exercises control dependence on the end node. See ControlDependenceGraphPass.
A container of ControlDependence edges. NodeType is necessary because of the Neo4J OGM.
This edge class defines a flow of data between start and end. The flow can have a certain granularity.
The types of dependences that might be represented in the CPG
An edge in our Evaluation Order Graph (EOG). It considers the order in which our AST statements would be "evaluated" (e.g. by a compiler or interpreter). See EvaluationOrderGraphPass for more details.
Holds a container of EvaluationOrder edges. The canonical version of this lives in Node.prevEOGEdges / Node.nextEOGEdges and is populated by the EvaluationOrderGraphPass.
This dataflow granularity is the default. The "whole" object is flowing from Dataflow.start to Dataflow.end.
The granularity of the data-flow, e.g., whether the flow contains the whole object, or just a part of it, for example a record (class/struct) member.
This edge class denotes the invocation of a FunctionDeclaration by a CallExpression.
This dataflow granularity denotes that not the "whole" object is flowing from Dataflow.start to Dataflow.end but only parts of it. Common examples include MemberExpression nodes, where we model a dataflow to the base, but only partially scoped to a particular field.
A container of Edge edges that act as a program dependence graph (PDG). The canonical version of this lives in Node.prevPDGEdges / Node.nextPDGEdges and is populated by the ProgramDependenceGraphPass.
This edge class denotes the usage of a ValueDeclaration in a Reference.
Functions
Creates a new default Granularity. Currently, this defaults to FullDataflowGranularity.
Creates a new FullDataflowGranularity.
Creates a new PartialDataflowGranularity. The target is the Declaration that is affected by the partial dataflow. Examples include a FieldDeclaration for a MemberExpression or a VariableDeclaration for a TupleDeclaration.