Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 21 additions & 17 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,23 +32,36 @@ jobs:
- name: Checkout
uses: actions/checkout@v7

- name: Setup .NET
uses: actions/setup-dotnet@v6
with:
dotnet-version: |
8.0.x
10.0.x

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: csharp
# build-mode: none analyses the C# source directly, without a build.
# It is load-bearing, not a convenience, for two reasons:
#
# 1. paths-ignore (below) only takes effect in this mode. When CodeQL
# builds a compiled language, GitHub applies no path filter — every
# file the compiler sees is analysed, obj/ included — so under the
# explicit build this workflow used to run, paths-ignore was
# silently inert and the xUnit auto-generated entry point in obj/
# was analysed and flagged in every repo. Buildless extraction
# honours the filter, so the exclusion the standard mandates
# actually happens.
#
# 2. It reads the source across every target framework at once. These
# repos multi-target, and autobuild has picked a single TFM in the
# past, silently analysing half the code; the explicit build existed
# to guard against that. Buildless extraction reads the source
# itself, not one TFM's build output, so it covers all of it with no
# build step to get wrong.
build-mode: none
# security-and-quality is broader than the default security-extended;
# these are small libraries, so the extra findings are affordable.
queries: security-and-quality
# Analyse source only. obj/ and bin/ hold generated and compiled
# output — e.g. the xUnit auto-generated entry point — so findings
# there are noise against code no human maintains.
# there are noise against code no human maintains. Effective only
# under build-mode: none (above).
#
# query-filters excludes the two audit queries that fire on every
# P/Invoke declaration and call site (cs/unmanaged-code,
Expand All @@ -68,15 +81,6 @@ jobs:
- exclude:
id: cs/call-to-unmanaged-code

# Explicit build rather than autobuild: these repos multi-target, and
# autobuild has picked a single TFM in the past, silently analysing half
# the code. Restore is separate so a restore failure is legible.
- name: Restore
run: dotnet restore

- name: Build
run: dotnet build --configuration Release --no-restore

- name: Perform CodeQL analysis
uses: github/codeql-action/analyze@v4
with:
Expand Down
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **CodeQL now analyses the C# source buildless** (NextIteration.Standards §4.4). The
`codeql.yml` init step moves to `build-mode: none` and the explicit `Setup .NET`,
`Restore`, and `Build` steps are dropped. This is load-bearing, not a simplification:
GitHub applies the `paths-ignore` filter *only* under buildless extraction — under a
compiled build every file the compiler sees is analysed, `obj/` included, so the
`**/obj/**` exclusion this repo already declared was silently inert and the xUnit
auto-generated entry point in `obj/` was being analysed. Buildless extraction also reads
every target framework at once, where autobuild could pick a single TFM and analyse half
the code. Adopts the revised canonical `codeql.yml` verbatim; no query coverage changes.

## [1.0.0] — 2026-08-21

First stable release. Headline: whole-store **export/import** to move credentials
Expand Down