Module DataFlowImplLocal

Provides an implementation of global (interprocedural) data flow. This file re-exports the local (intraprocedural) data flow analysis from DataFlowImplSpecific::Public and adds a global analysis, mainly exposed through the Configuration class. This file exists in several identical copies, allowing queries to use multiple Configuration classes that depend on each other without introducing mutual recursion among those configurations.

Import path

import semmle.code.cpp.dataflow.internal.DataFlowImplLocal




Holds if data can flow (inter-procedurally) from source to sink.



A configuration of interprocedural data flow analysis. This defines sources, sinks, and any other configurable aspect of the analysis. Each use of the global data flow library must define its own unique extension of this abstract class. To create a configuration, extend this class with a subclass whose characteristic predicate is a unique singleton string. For example, write


A Node augmented with a call context (except for sinks), an access path, and a configuration. Only those PathNodes that are reachable from a source are generated.



Provides the query predicates needed to include a graph in a path-problem query.