Module ConsistencyChecks
Provides checks for the consistency of the data model and database.
Import path
import semmle.code.cil.ConsistencyChecks
Classes
AccessMissingTarget |
An access that does not have exactly one target. |
ArrayTypeInvalidRank |
An array with an invalid |
ArrayTypeMissingElement |
An array with an invalid |
BranchWithoutTarget |
A branch without a target. |
CatchHandlerMissingType |
A catch handler that doesn’t have a caught exception type. |
CfgViolation |
A consistency violation on a control flow node. |
ConsistencyViolation |
A consistency violation in the database or data model. |
ConstructedMethodTypeParams |
A constructed method that does not match its unbound method. |
ConstructedSourceDeclarationMethod | |
DeadInstruction |
A dead instruction, not reachable from any entry point. These should not exist, however it turns out that the Mono compiler sometimes emits them. |
DeadInstructionViolation |
An instruction that is not reachable from any entry point. |
DeclarationViolation |
A violation in a |
DeclarationWithMultipleLabels |
A declaration with multiple labels. |
DeclarationWithoutLabel |
A declaration without a label. |
DisabledCheck |
A check that is deliberately disabled. |
ExprMissingType |
An expression that does not have exactly one type. Note that calls with no return have type |
ExprPushCount |
An expression that have an unexpected push count. |
FalseSuccessorIsSuccessor |
An instruction whose false successor is not a successor. |
InconsistentKind |
The type of a kind must be consistent between a constructed generic and its unbound generic. |
InconsistentMethodLocation |
The location of a constructed method should be equal to the location of its unbound generic. |
InconsistentPopCount |
A CFG node that does not have exactly 1 |
InconsistentPushCount |
A CFG node that does not have exactly one |
InconsistentTypeLocation |
The location of a constructed generic type should be the same as the location of its unbound generic type. |
InstructionViolation |
A consistency violation in a specific instruction. |
InvalidBranchSuccessors |
A branch instruction that does not have exactly 2 successors. |
InvalidExpressionViolation |
An instruction that has a push count of 0, yet is still used as an operand |
InvalidOverride |
An override that is invalid because the overridden method is not in a base class. |
InvalidPointerType |
A pointer type that does not have a pointee type. |
InvalidReturn |
A return instruction that does not have a stack size of 0 after it. |
InvalidStackSize |
A CFG node that does not have exactly one stack size. Disabled because inconsistent stack sizes have been observed. |
InvalidThrow |
A throw instruction that does not have a stack size of 0 after it. |
KindViolation |
A type should have at most one kind, except for missing referenced types where the interface/class is unknown. |
MemberWithInvalidName |
A member with an invalid name. |
MethodViolation |
A consistency violation in a method. |
MissingCallTarget |
A call that does not have exactly one |
MissingCilDeclaration |
A C# declaration which is expected to have a corresponding CIL declaration, but for some reason does not. |
MissingEntityViolation |
A violation marking an entity that should be present but is not. |
MissingObjectViolation |
The type |
MissingOpCode |
An instruction that has not been assigned a specific QL class. |
MissingOperand |
An instruction that is missing an operand. It means that there is no instruction which pushes a value onto the stack for this instruction to pop. |
MissingStackSize |
A CFG node that does not have a stack size. |
MissingValue |
A literal that does not have exactly one |
NoFalseSuccessor |
A branch instruction that does not have a false successor. |
NoTrueSuccessor |
A branch instruction that does not have a true successor. |
OnlyYesNoBranchHasTrueFalseSuccessors |
An instruction that has a true/false successor but is not a branch. |
PropertyWithNoAccessors |
Properties that have no accessors. |
StaticFieldTarget |
A field access where the field is “static” but the instruction is “instance”. |
TrueSuccessorIsSuccessor |
An instruction whose true successor is not a successor. |
TypeIsBothConstructedAndUnbound |
A type that has both type arguments and type parameters. |
TypeMultiplyDefined |
A type that has multiple entities with the same qualified name in |
TypeParameterMismatch |
A constructed type that does not match its unbound generic type. |
TypeViolation |
A consistency violation in a type. |
UnconditionalBranchSuccessors |
An unconditional branch instruction that has more than one successor. |
YesNoBranch |