Files
codeql/python/ql/lib/semmle/python/frameworks
yoff 5b9803e03c Python: switch dataflow library to new (shared) CFG + SSA
Flips the Python dataflow trunk from the legacy CFG (semmle/python/Flow.qll)
and legacy ESSA SSA (semmle/python/essa/*) to the new shared CFG facade
(semmle.python.controlflow.internal.Cfg) and the new SSA adapter
(semmle.python.dataflow.new.internal.SsaImpl), both introduced
additively in the preceding PRs in this stack.

This is the trunk-flip equivalent of the original draft PR #21894 (kept
around as documentation), rebased on top of the four preparatory PRs:

  P1: Remove AstNode.getAFlowNode() and rewrite callers (#21919).
  P2: Qualify Flow.qll's AST references with Py:: prefix (#21920).
  P3: Add new shared-CFG-backed control flow graph (#21921).
  P4: Add new shared-SSA-backed SSA adapter (#21923).

The Python dataflow library (semmle/python/dataflow/new/) now imports
the new CFG facade and SSA adapter. All CFG-typed predicates
(ControlFlowNode, CallNode, BasicBlock, NameNode, AttrNode, ...) are
qualified with the Cfg:: prefix; SSA references switch from
EssaVariable/EssaDefinition to SsaImpl::Definition/SourceVariable.

GuardNode is redesigned to use the new CFG's outcome-node model
(isAfterTrue / isAfterFalse) instead of the legacy ConditionBlock +
flipped indirection. Only BarrierGuard<...> is preserved as public
API.

Framework files (Bottle, FastApi, Django, Tornado, Pyramid, Stdlib,
...) are updated to take CFG nodes from the new facade.

A handful of dataflow consistency tweaks for the new CFG:
- Augmented-assignment targets are treated as both load and store.
- 'from X import *' produces uncertain SSA writes for unknown names.
- CFG nodes are canonicalised so dataflow does not see equivalent
  pre/post-order pairs as distinct nodes.

Two AST tweaks for the new CFG:
- AstNodeImpl: omit PEP 695 type-parameter names from
  FunctionDefExpr / ClassDefExpr children.
- ImportResolution: drop the legacy essa import.

Test churn (~175 files): reblessed library- and query-test .expected
files reflect slightly different CFG granularity, different toString
output, and a handful of true alert deltas in security queries.

Verification: all 367 lib + src + consistency-queries compile clean.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-05 08:04:01 +00:00
..
2026-03-27 22:39:10 +00:00
2023-12-08 11:27:52 +01:00
2025-07-14 16:30:45 +02:00
2023-03-22 15:51:47 +01:00
2023-09-29 11:32:51 +02:00
2024-12-09 19:55:42 +00:00
2025-07-14 16:30:45 +02:00
2023-12-08 11:27:51 +01:00
2024-12-09 19:57:39 +00:00
2023-09-25 10:35:18 +02:00
2024-05-10 08:32:45 +02:00
2022-09-09 10:34:14 +02:00
2022-09-09 10:34:14 +02:00
2025-07-14 16:30:45 +02:00
2023-12-08 11:27:51 +01:00
2022-10-10 13:49:26 +02:00
2023-09-25 10:24:53 +02:00
2024-05-27 09:48:10 +00:00
2022-10-13 18:08:47 +02:00
2025-05-27 13:51:03 +02:00
2024-05-29 15:42:29 +02:00
2023-12-08 11:27:52 +01:00
2024-05-10 08:32:45 +02:00
2024-01-29 14:30:20 +01:00
2022-10-13 12:43:47 +02:00
2025-07-14 16:30:45 +02:00
v1
2023-10-08 21:24:54 +02:00
2025-11-26 11:23:04 +00:00
2024-12-18 15:58:51 +01:00
2024-07-31 13:22:27 +02:00
2025-07-14 16:30:45 +02:00
2025-12-01 20:41:59 +00:00