Class DataFlow::BarrierGuard

A guard that validates some expression.

To use this in a configuration, extend the class and provide a characteristic predicate precisely specifying the guard, and override checks to specify what is being validated and in which branch.

It is important that all extending classes in scope are disjoint.

Import path

import semmle.code.java.dataflow.DataFlow

Direct supertypes

Indirect supertypes

Known direct subtypes

    Predicates

    checks

    Holds if this guard validates e upon evaluating to branch.

    getAGuardedNode

    Gets a node guarded by this guard.

    Inherited predicates

    controls

    Holds if this guard evaluating to branch directly or indirectly controls the block controlled. That is, the evaluation of controlled is dominated by this guard evaluating to branch.

    from Guard
    directlyControls

    Holds if this guard evaluating to branch directly controls the block controlled. That is, the true- or false-successor of this guard (as given by branch) dominates controlled.

    from Guard
    getBasicBlock

    Gets the basic block containing this guard or the basic block containing the switch expression if the guard is a switch case.

    from Guard
    getEnclosingCallable

    Gets the immediately enclosing callable whose body contains this guard.

    from Guard
    getEnclosingStmt

    Gets the statement containing this guard.

    from Guard
    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
    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 the evaluation of this guard to branch corresponds to the edge from bb1 to bb2.

    from Guard
    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
    isEquality

    Holds if this guard is an equality test between e1 and e2. The test can be either ==, !=, .equals, or a switch case. If the test is negated, that is !=, then polarity is false, otherwise polarity is true.

    from Guard
    toString

    Gets a textual representation of this element.

    from Top