Module Splitting

INTERNAL: Do not use.

Provides classes and predicates relevant for splitting the control flow graph.

Import path

semmle.code.csharp.controlflow.internal.Splitting

Imports

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.

csharp

The default C# QL library.

Predicates

succEntrySplits

Holds if succ with splits succSplits is the first element that is executed when entering callable pred.

succExitSplits

Holds if pred with splits predSplits can exit the enclosing callable succ with type t.

Classes

SplitImpl

A split for a control flow element. For example, a tag that determines how to continue execution after leaving a finally block.

SplitInternal
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.

Modules

BooleanSplitting
ExceptionHandlerSplitting
FinallySplitting
Reachability

Provides logic for calculating reachable control flow nodes.