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

Class Guard

A guard. This may be any expression whose value determines subsequent control flow. It may also be a switch case, which as a guard is considered to evaluate to either true or false depending on whether the case matches.

Import path

import semmle.code.java.controlflow.Guards

Direct supertypes

Indirect supertypes

Predicates

appliesTypeTest

Holds if this guard tests whether testedExpr has type testedType.

getEnclosingCallable

Gets the immediately enclosing callable whose body contains this guard.

Inherited predicates

controls

Holds if this guard evaluating to branch controls the basic block bb. That is, execution of bb implies that this guard evaluated to branch.

from Guard
controlsBranchEdge

Holds if this guard evaluating to branch controls the control-flow branch edge from bb1 to bb2. That is, following the edge from bb1 to bb2 implies that this guard evaluated to branch.

from Guard
directlyControls

Holds if this guard evaluating to branch directly controls the basic block bb.

from PreGuard
directlyValueControls

Holds if this guard evaluating to v directly controls the basic block bb.

from PreGuard
getAPrimaryQlClass

Gets the name of a primary CodeQL class to which this element belongs.

from Top
getBasicBlock

Gets the basic block of this guard. For expressions, this is the basic block of the expression itself, and for switch cases, this is the basic block of the expression being compared against the cases.

from PreGuard
getFile

Gets the file associated with this element.

from Top
getLocation

Gets the source location for this element.

from Top
getNumberOfCommentLines

Gets the number of comment lines that this element ranges over.

from Top
getNumberOfLinesOfCode

Gets the number of lines of code that this element ranges over.

from Top
getPrimaryQlClasses

Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs.

from Top
getTotalNumberOfLines

Gets the total number of lines that this element ranges over, including lines of code, comment and whitespace-only lines.

from Top
hasBranchEdge

Holds if this guard is the last node in bb1 and that its successor is bb2 exactly when evaluating to branch.

from PreGuard
hasLocationInfo

Holds if this element is at the specified location. The location spans column startcolumn of line startline to column endcolumn of line endline in file filepath. For more information, see Locations.

from Top
hasValueBranchEdge

Holds if this guard evaluating to v corresponds to taking the edge from bb1 to bb2. For ordinary conditional branching this guard is the last node in bb1, but for switch case matching it is the switch expression, which may either be in bb1 or an earlier basic block.

from PreGuard
isEquality

Holds if this guard tests equality between e1 and e2 upon evaluating to eqval.

from PreGuard
toString

Gets a textual representation of this element.

from Top
valueControls

Holds if this guard evaluating to v controls the basic block bb. That is, execution of bb implies that this guard evaluated to v.

from Guard
valueControlsBranchEdge

Holds if this guard evaluating to v controls the control-flow branch edge from bb1 to bb2. That is, following the edge from bb1 to bb2 implies that this guard evaluated to v.

from Guard