mirror of
https://github.com/github/codeql.git
synced 2025-12-19 18:33:16 +01:00
27 lines
902 B
Plaintext
27 lines
902 B
Plaintext
import csharp
|
|
import ControlFlow
|
|
import Common
|
|
import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl
|
|
import semmle.code.csharp.controlflow.internal.Splitting as Splitting
|
|
import Nodes
|
|
|
|
query predicate booleanNode(ElementNode e, BooleanSplit split) { split = e.getASplit() }
|
|
|
|
class MyFinallySplitControlFlowNode extends ElementNode {
|
|
MyFinallySplitControlFlowNode() {
|
|
exists(Splitting::FinallySplitting::FinallySplitType type |
|
|
type = this.getASplit().(FinallySplit).getType()
|
|
|
|
|
not type instanceof SuccessorTypes::NormalSuccessor
|
|
)
|
|
}
|
|
|
|
Statements::TryStmtTree getTryStmt() { this.getElement() = result.getAFinallyDescendant() }
|
|
}
|
|
|
|
query predicate finallyNode(MyFinallySplitControlFlowNode f, TryStmt try) { try = f.getTryStmt() }
|
|
|
|
query predicate entryPoint(Callable c, SourceControlFlowElement cfn) {
|
|
c.getEntryPoint().getASuccessor().getElement() = cfn
|
|
}
|