Module DataFlowImpl

Provides an implementation of global (interprocedural) data flow. This file re-exports the local (intraprocedural) data flow analysis from DataFlowUtil 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

semmle.code.cpp.dataflow.internal.DataFlowImpl

Imports

DataFlowUtil

Provides C++-specific definitions for use in the data flow library.

Predicates

flowsTo

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

Classes

Configuration

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

PathNode

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.

Modules

PathGraph

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