CodeQL library for C#
codeql/csharp-all 0.8.11-dev (changelog, source)
Search

Class Instruction

An instruction.

Import path

import semmle.code.cil.Instruction

Direct supertypes

Indirect supertypes

Known direct subtypes

Predicates

canFlowNext

Holds if this instruction passes control flow into the next instruction.

getALocation

Gets a location of this element, which can include locations in both DLLs and source files.

getASuccessorType

Gets a successor instruction to this instruction.

getAccess

Gets the declaration accessed by this instruction, if any.

getExtra

Gets an extra field to display for this instruction, if any.

getHandler

Gets the ith handler that applies to this instruction. Indexed from 0.

getImplementation

Gets the method containing this instruction.

getIndex

Gets the index of this instruction. Instructions are sequenced from 0.

getLocation
getMethod

Gets the method that contains this dataflow node.

getOpcode

Gets the opcode of this instruction.

getOpcodeName

Gets the opcode name of this instruction, for example ldnull.

getType
toString
toStringExtra

Gets a more verbose textual representation of this instruction.

Inherited predicates

fromLibrary

Holds if this element is from an assembly.

from Element
fromSource

Holds if this element is from source code.

from Element
getAPredecessor

Gets a predecessor of this node, if any.

from ControlFlowNode
getAPrimaryQlClass

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

from Element
getASuccessor

Gets a successor of this node, if any.

from ControlFlowNode
getAnOperand

Gets an operand of this instruction, if any.

from ControlFlowNode
getFalseSuccessor

Gets a false successor of this node, if any.

from ControlFlowNode
getFile

Gets the file containing this element.

from Element
getLanguage

Gets the “language” of this program element, as defined by the extension of the filename. For example, C# has language “cs”, and Visual Basic has language “vb”.

from Element
getOperand

Gets an instruction that supplies the ith operand to this instruction. Note that this can be multi-valued.

from ControlFlowNode
getOperandType

Gets the type of the ith operand. Unlike getOperand(i).getType(), this predicate takes into account when there are multiple possible operands with different types.

from ControlFlowNode
getParentExpr

Gets an expression that consumes the output of this instruction on the stack.

from ControlFlowNode
getPopCount

Gets the number of items this node pops from the stack.

from ControlFlowNode
getPrimaryQlClasses

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

from Element
getPushCount

Gets the number of items this node pushes onto the stack. This value is either 0 or 1, except for the instruction dup which pushes 2 values onto the stack.

from ControlFlowNode
getStackSizeAfter

Gets the stack size after this instruction.

from ControlFlowNode
getStackSizeBefore

Gets the stack size before this instruction.

from ControlFlowNode
getTrueSuccessor

Gets a true successor of this node, if any.

from ControlFlowNode
isBranch

Holds if this control flow node has more than one successor.

from ControlFlowNode
isJoin

Holds if this control flow node has more than one predecessor.

from ControlFlowNode
toStringWithTypes

Gets the full textual representation of this element, including type information.

from Element