Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c77acf9
Cfg: Add ConditionKind and getDual to ConditionalSuccessor.
aschackmull Feb 5, 2026
b8d9c18
Java: Preparatory tweaks.
aschackmull Feb 6, 2026
19787b6
Java: Replace ControlFlowNode.asCall with Call.getControlFlowNode.
aschackmull Feb 6, 2026
d69db00
Cfg: Add getEnclosingCallable to shared BasicBlock
aschackmull Feb 6, 2026
ebf94a1
Java: Replace idominance tests.
aschackmull Feb 16, 2026
365ddc1
Java/Cfg: Introduce new shared CFG library and replace the Java CFG.
aschackmull Jan 20, 2026
a49e616
Java: Fix Cyclomatic complexity calculation.
aschackmull Feb 9, 2026
3c8108f
Java: Fix RangeAnalysis/ModulusAnalysis.
aschackmull Feb 9, 2026
0d38063
Java: Fix switchcase guards.
aschackmull Feb 9, 2026
f4e8276
Java: Adjust BasicBlock-based qltests.
aschackmull Feb 10, 2026
7a12ecb
Java: Adjust idominance tests.
aschackmull Feb 16, 2026
f78bc45
Java: Accept guards test changes for revised switch CFG.
aschackmull Feb 10, 2026
66b60a8
Java: Accept test changes due to pruned CFG, after-nodes, and reduced…
aschackmull Feb 10, 2026
91679d0
Java: Accept new CFG nodes.
aschackmull Feb 10, 2026
9eeeb97
Java: Fix instanceof-disjunction.
aschackmull Feb 11, 2026
1d7b434
Java: Exclude ExprStmt consistent with SwitchCase.getRuleExpression().
aschackmull Feb 11, 2026
7f72cf8
Java: Fix reference to entry node.
aschackmull Feb 12, 2026
32c01f8
Java: Remove test. Flexible constructors need AST-based tests, which …
aschackmull Feb 12, 2026
8c9c203
Java: Accept new locations for SSA definitions.
aschackmull Feb 12, 2026
365178e
Java: Accept dispatch precision improvement.
aschackmull Feb 12, 2026
ff2889b
Java: Fix enhancedForEarlyExit implementation.
aschackmull Feb 12, 2026
6c2d729
Java: Accept new TP in NullMaybe.
aschackmull Feb 12, 2026
adc3850
Java: Accept removal of spurious reason (the alert stays).
aschackmull Feb 12, 2026
01e1489
Java: Accept reduced precision from no longer nesting completions in …
aschackmull Feb 12, 2026
13ec4e5
Java: Accept revised CFG.
aschackmull Feb 13, 2026
d15ec10
Java: Remove obsolete tests - false successors are no longer special.
aschackmull Feb 16, 2026
4bc3712
Java: Enable Cfg consistency checks.
aschackmull Feb 16, 2026
9e87827
Java: Adjust switch case guards test.
aschackmull Feb 16, 2026
ad7e913
Java: Add change note.
aschackmull Feb 18, 2026
6bd84af
Java: Handle missing throws clauses.
aschackmull Feb 20, 2026
3b43441
Java: Add nullness test covering known FP.
aschackmull Feb 23, 2026
df51520
Guards: Improve join-order.
aschackmull Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions java/ql/consistency-queries/CfgConsistency.ql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import java
import ControlFlow::Consistency
16 changes: 16 additions & 0 deletions java/ql/lib/change-notes/2026-02-18-cfg.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
category: breaking
---
* The Java control flow graph (CFG) implementation has been completely
rewritten. The CFG now includes additional nodes to more accurately represent
certain constructs. This also means that any existing code that implicitly
relies on very specific details about the CFG may need to be updated.
The CFG now only includes the nodes that are reachable from the entry point.
Additionally, the following breaking changes have been made:
- `ControlFlowNode.asCall` has been removed - use `Call.getControlFlowNode` instead.
- `ControlFlowNode.getEnclosingStmt` has been removed.
- `ControlFlow::ExprNode` has been removed.
- `ControlFlow::StmtNode` has been removed.
- `ControlFlow::Node` has been removed - this was merely an alias of
`ControlFlowNode`, which is still available.
- Previously deprecated predicates on `BasicBlock` have been removed.
4 changes: 2 additions & 2 deletions java/ql/lib/printCfg.ql
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ external int selectedSourceColumn();

private predicate selectedSourceColumnAlias = selectedSourceColumn/0;

module ViewCfgQueryInput implements ViewCfgQueryInputSig<File> {
module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig<File> {
predicate selectedSourceFile = selectedSourceFileAlias/0;

predicate selectedSourceLine = selectedSourceLineAlias/0;
Expand All @@ -42,4 +42,4 @@ module ViewCfgQueryInput implements ViewCfgQueryInputSig<File> {
}
}

import ViewCfgQuery<File, ViewCfgQueryInput>
import ControlFlow::ViewCfgQuery<File, ViewCfgQueryInput>
96 changes: 0 additions & 96 deletions java/ql/lib/semmle/code/java/Completion.qll

This file was deleted.

Loading
Loading