Files
codeql/csharp/ql/test/library-tests/controlflow/graph/Condition.ql
2019-08-23 15:25:01 +02:00

19 lines
567 B
Plaintext

import csharp
import ControlFlow
query predicate conditionBlock(
BasicBlocks::ConditionBlock cb, BasicBlock controlled, boolean testIsTrue
) {
cb.controls(controlled, any(SuccessorTypes::ConditionalSuccessor s | testIsTrue = s.getValue()))
}
ControlFlow::Node successor(ControlFlow::Node node, boolean kind) {
kind = true and result = node.getATrueSuccessor()
or
kind = false and result = node.getAFalseSuccessor()
}
query predicate conditionFlow(ControlFlow::Node node, ControlFlow::Node successor, boolean kind) {
successor = successor(node, kind)
}