CodeQL library for Java
codeql/java-all 0.5.4 (changelog, source)
Search

Module DataFlowImpl

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.java.dataflow.internal.DataFlowImpl

Imports

Predicates

flowsTo

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

stageStats

INTERNAL: Only for debugging.

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, and which can reach a sink, are generated.

Modules

PathGraph

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