Class EarlyStageNode
A data-flow node that is not a flow summary node.
This node exists to avoid an unwanted dependency on flow summaries in some parts of the codebase that should not depend on them.
In particular, this dependency chain must not result in negative recursion:
- Flow summaries can only be created after pruning irrelevant flow summaries
- To prune irrelevant flow summaries, we must know which packages are imported
- To know which packages are imported, module systems must be evaluated
- The AMD and NodeJS module systems rely on data flow to find calls to
require
and similar. These module systems must therefore useEarlyStageNode
instead ofDataFlow::Node
.
Import path
import semmle.javascript.dataflow.internal.DataFlowNode
Direct supertypes
Predicates
getLocation | Gets the location of this data flow node. |
toString | Gets a string representation of this data flow node. |