Skip to content

C#: Remove splitting-awareness from data flow.#21473

Open
aschackmull wants to merge 9 commits intogithub:mainfrom
aschackmull:csharp/dataflow-no-split
Open

C#: Remove splitting-awareness from data flow.#21473
aschackmull wants to merge 9 commits intogithub:mainfrom
aschackmull:csharp/dataflow-no-split

Conversation

@aschackmull
Copy link
Contributor

Now that splitting has been (almost) eradicated from C#, the code that makes C# data flow splitting-aware has become superfluous.

@aschackmull aschackmull added the no-change-note-required This PR does not need a change note label Mar 13, 2026
@github-actions github-actions bot added the C# label Mar 13, 2026
@aschackmull aschackmull force-pushed the csharp/dataflow-no-split branch from 59e0041 to 591f9d7 Compare March 13, 2026 13:25
@aschackmull aschackmull marked this pull request as ready for review March 13, 2026 13:31
@aschackmull aschackmull requested review from a team as code owners March 13, 2026 13:31
Copilot AI review requested due to automatic review settings March 13, 2026 13:31
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes the C#-specific “splitting-aware” control-flow reachability layer previously used to constrain local data-flow/taint steps, simplifying the internal C# data-flow implementation now that splitting is largely gone.

Changes:

  • Deleted dataflow/internal/ControlFlowReachability.qll and removed its imports/uses across internal data-flow and taint tracking.
  • Replaced reachability-configuration–based stepping with direct local step predicates and simplified reverse post-update handling.
  • Updated config/identical-files.json to drop the “C# ControlFlowReachability” identical-files group.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPrivate.qll Removes dependency on splitting-aware reachability and simplifies local taint expression stepping and post-update reverse steps.
csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll Removes reachability configuration scaffolding; refactors local flow/argument/store/read/lambda logic to not rely on splitting-aware reachability.
csharp/ql/lib/semmle/code/csharp/dataflow/internal/ControlFlowReachability.qll Deletes the splitting-aware control-flow reachability helper module used by internal data-flow.
csharp/ql/consistency-queries/DataFlowConsistency.ql Updates post-update node handling to match the refactored LocalFlow reverse-step API.
config/identical-files.json Removes the identical-files entry tying the deleted file to its rangeanalysis counterpart.

You can also share your feedback on Copilot code review. Take the survey.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C# no-change-note-required This PR does not need a change note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants