qtil
advanced-security/qtil-ruby 0.0.2
Search

Module ControlFlowGraphImplShared

Provides language-independent definitions for AST-to-CFG construction.

Import path

import codeql.ruby.controlflow.internal.ControlFlowGraphImplShared

Imports

Cached
SuccSplits

Provides a predicate for the successor relation with split information, as well as logic used to construct the type TSplits representing sets of splits. Only sets of splits that can be reached are constructed, hence the predicates are mutually recursive.

Predicates

first

Holds if first is the first element executed within control flow element cft.

last

Holds if last with completion c is a potential last element executed within control flow element cft.

succ

Holds if succ is a control flow successor for pred, given that pred finishes with completion c.

Classes

ControlFlowTree

An element with associated control flow.

LeafTree

An element that is a leaf in the control flow graph.

PostOrderTree

An element that is executed in post-order.

PreOrderTree

An element that is executed in pre-order.

SplitImpl

An interface for implementing an entity to split on.

SplitKind

A split kind. Each control flow node can have at most one split of a given kind.

Splits

A set of control flow node splits. The set is represented by a list of splits, ordered by ascending rank.

StandardPostOrderTree

A standard element that is executed in post-order.

StandardPreOrderTree

A standard element that is executed in pre-order.

StandardTree

An element where the children are evaluated following a standard left-to-right evaluation. The actual evaluation order is determined by the predicate getChildElement().

Modules

Consistency

Provides a set of splitting-related consistency queries.

TestOutput

Import this module into a .ql file of @kind graph to render a CFG. The graph is restricted to nodes from RelevantNode.