CodeQL library for Ruby
codeql/ruby-all 3.0.3-dev (changelog, source)
Search

Module DataFlowPrivate

Import path

import codeql.ruby.dataflow.internal.DataFlowPrivate

Imports

ArgumentNodes
Cached

A collection of cached types and predicates to be evaluated in the same stage.

OutNodes
ParameterNodes
ReturnNodes

Predicates

additionalLambdaFlowStep

Extra data-flow steps needed for lambda flow analysis.

allowParameterReturnInSelf

Holds if flow is allowed to pass from parameter p and back to itself as a side-effect, resulting in a summary from p to itself.

clearsContent

Holds if values stored inside content c are cleared at node n. For example, any value stored inside f is cleared at the pre-update node associated with x in x.f = newValue.

compatibleTypes

Holds if t1 and t2 are compatible, that is, whether data can flow from a node of type t1 to a node of type t2.

expectsContent

Holds if the value that is being tracked is expected to be stored inside content c at node n.

forceHighPrecision

Holds if access paths with c at their head always should be tracked at high precision. This disables adaptive access path precision for such access paths.

getAPostUpdateNodeForArg

Gets a node for which to construct a post-update node for argument arg.

getContentApprox

Gets an approximated value for content c.

getNodeType

Gets the type of n used for type pruning.

getParameterDef

Gets the SSA definition node corresponding to parameter p.

isArgumentNode

Holds if arg is an ArgumentNode of c with position pos.

isNonConstantExpr

Holds if n is not a constant expression.

isParameterNode

Holds if p is a ParameterNode of c with position pos.

isUnreachableInCall

Holds if the nodes in nr are unreachable when the call context is call.

jumpStep
knownSinkModel
knownSourceModel
lambdaCall

Holds if call is a (from-source or from-summary) lambda call of kind kind where receiver is the lambda expression.

lambdaCreation

Holds if creation is an expression that creates a lambda of kind kind for c.

lambdaSourceCall

Holds if call is a from-source lambda call of kind kind where receiver is the lambda expression.

localMustFlowStep
neverSkipInPathGraph

Holds if n should never be skipped over in the PathGraph and in path explanations.

nodeGetEnclosingCallable

Gets the callable in which this node occurs.

nodeIsHidden

Holds if n should be hidden from path explanations.

readStep

Holds if there is a read step of content c from node1 to node2.

readStepCommon

Subset of readStep that should be shared with type-tracking.

storeStep

Holds if data can flow from node1 to node2 via an assignment to content c.

storeStepCommon

Subset of storeStep that should be shared with type-tracking.

typeStrongerThan

Classes

AdditionalJumpStep

A unit class for adding additional jump steps.

ArgumentNode

A data-flow node that represents a call argument.

CaptureNode

A synthesized data flow node representing a closure object that tracks captured variables.

CapturedVariableNode

A data flow node representing a captured variable. Only used in type tracking.

CastNode

A node that performs a type cast.

ContentApprox

An approximated Content.

DataFlowType
FlowSummaryNode

A data-flow node used to model flow summaries.

NodeImpl
NodeRegion
OutNode

A data-flow node that represents the output of a call.

PostUpdateNodeImpl
ReturnNode

A data-flow node that represents a value returned by a callable.

ReturningStatementNode

A value returning statement, viewed as a node in a data flow graph.

SourceReturnNode

A data-flow node that represents a value returned by a callable.

SsaDefinitionExtNode

An (extended) SSA definition, viewed as a node in a data flow graph.

SsaDefinitionNodeImpl
SsaInputNode

A node that represents an input to an SSA phi (read) definition.

SsaNode

An SSA node.

SsaSelfDefinitionNode

An SSA definition for a self variable.

Datatypes

Modules

ArgumentNodes
LocalFlow

Provides predicates related to local data flow.

SsaFlow

Provides logic related to SSA.

TypeInference

Provides logic for assigning types to data flow nodes.

VariableCapture

Provides logic related to captured variables.

Aliases

DataFlowExpr

A control-flow node that wraps an AST expression.

DataFlowSecondLevelScope

The trivial type with a single element.