Skip to content

fix: decode SARIF location URIs in diff-informed alert filtering - #4283

Open
sam-robson wants to merge 1 commit into
mainfrom
sam-robson/decode-diff-informed-sarif-uris
Open

sam-robson wants to merge 1 commit into
mainfrom
sam-robson/decode-diff-informed-sarif-uris

Conversation

@sam-robson

Copy link
Copy Markdown
Contributor

filterAlertsByDiffRange compares SARIF artifactLocation.uri values against changed file paths from GitHub's diff API (range.path). CodeQL percent-encodes artifactLocation.uri in SARIF, while range.path is a raw file path, so alerts in files with spaces, non-ASCII characters, or special characters were dropped during diff-informed filtering.

Decode locationUri with decodeURIComponent before matching against range.path, while keeping the raw locationUri check for unencoded paths or malformed percent sequences.

 filterAlertsByDiffRange(sarifLog)
   readDiffRangesJsonFile() -> range.path ("with space/board.js")
   for each result location
     locationUri = physicalLocation.artifactLocation.uri ("with%20space/board.js")
+    decodedLocationUri = decodeURIComponent(locationUri) ("with space/board.js")
-    match range.path === locationUri
+    match range.path === decodedLocationUri || range.path === locationUri

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

Workflow types:

  • Advanced setup - Impacts users who have custom CodeQL workflows.
  • Managed - Impacts users with dynamic workflows (Default Setup, Code Quality, ...).

Products:

  • Code Scanning - The changes impact analyses when analysis-kinds: code-scanning.
  • Code Quality - The changes impact analyses when analysis-kinds: code-quality.
  • Other first-party - The changes impact other first-party analyses.
  • Third-party analyses - The changes affect the upload-sarif action.

Environments:

  • Dotcom - Impacts CodeQL workflows on github.com and/or GitHub Enterprise Cloud with Data Residency.
  • GHES - Impacts CodeQL workflows on GitHub Enterprise Server.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).
  • End-to-end tests - I am depending on PR checks (i.e. tests in pr-checks).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Feature flags - All new or changed code paths can be fully disabled with corresponding feature flags.
  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Dashboards - I will watch relevant dashboards for issues after the release. Consider whether this requires this change to be released at a particular time rather than as part of a regular release.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

@github-actions github-actions Bot added the size/M Should be of average difficulty to review label Nov 2, 2026
@sam-robson
sam-robson force-pushed the sam-robson/decode-diff-informed-sarif-uris branch 2 times, most recently from 8b728b0 to c15b59e Compare November 2, 2026 16:00
@sam-robson
sam-robson force-pushed the sam-robson/decode-diff-informed-sarif-uris branch from c15b59e to b05fe69 Compare November 2, 2026 16:04
@sam-robson
sam-robson marked this pull request as ready for review November 2, 2026 16:35
@sam-robson
sam-robson requested a review from a team as a code owner November 2, 2026 16:35
Copilot AI auto review requested due to automatic review settings November 2, 2026 16:35

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

No active review issues remain, so the URI-decoding and fallback changes are ready for approval.

No open issues 🎉

1 file not reviewed
What changed in this PR

This pull request fixes diff-informed SARIF alert filtering by decoding percent-encoded artifact URIs before comparing them with raw GitHub diff paths, while preserving raw URI fallback behavior.

Changes:

  • Decode SARIF location URIs before diff-range matching.
  • Preserve raw matching for unencoded and malformed URIs.
  • Add unit coverage for encoded paths, special characters, Unicode, related locations, line ranges, and malformed URIs.
  • Document the filtering correction.
File Description
unreleased-change-notes/​decode-diff-informed-sarif-uris.md Documents the corrected alert-filtering behavior.
src/​upload-lib.ts Decodes SARIF location URIs and compares decoded and raw paths during filtering.
src/​upload-lib.test.ts Adds coverage for encoded, raw, related, and malformed URI cases.

Review effort: Lite (auto)

This branch has not been deployed

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

Labels

size/M Should be of average difficulty to review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants