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

Module SSA

Provides classes and predicates for SSA representation (Static Single Assignment form).

An SSA variable consists of the pair of a SsaSourceVariable and a ControlFlowNode at which it is defined. Each SSA variable is defined either by a phi node, an implicit initial value (for parameters and fields), an explicit update, or an implicit update (for fields). An implicit update occurs either at a Call that might modify a field, or at another update that can update the qualifier of a field.

Import path

import semmle.code.java.dataflow.SSA

Imports

MakeSsa<SsaImpl::SsaInput>
SsaPublic
java

Provides all default Java QL imports.

Predicates

sameValue

Gets an expression that has the same value as the given SSA variable.

ssaGetAFirstUse

Gets an access of the SSA source variable underlying this SSA variable that can be reached from this SSA variable without passing through any other uses, but potentially through phi nodes and uncertain implicit updates.

Classes

SsaCapturedDefinition

An SSA definition in a closure that captures a variable.

SsaExplicitUpdate

DEPRECATED: Use SsaExplicitWrite instead.

SsaImplicitCallDefinition

An SSA definition representing the potential definition of a variable via a call.

SsaImplicitInit

DEPRECATED: Use SsaParameterInit, SsaImplicitEntryDefinition, or SsaCapturedDefinition instead.

SsaImplicitQualifierDefinition

An SSA definition due to an update of the qualifier.

SsaImplicitUpdate

DEPRECATED: Use SsaImplicitWrite instead.

SsaPhiNode

DEPRECATED: Use SsaPhiDefinition instead.

SsaSourceField

A fully qualified field in the context of a Callable in which it is accessed.

SsaSourceVariable

A fully qualified variable in the context of a Callable in which it is accessed.

SsaUncertainImplicitUpdate

DEPRECATED: Use SsaUncertainWrite instead.

SsaUpdate

DEPRECATED: use SsaWriteDefinition instead.

SsaVariable

DEPRECATED: use SsaDefinition instead.

Aliases