Skip to content

Merge the analyzer release tables under one New Rules section (RS2007) - #7174

Merged
thomhurst merged 1 commit into
thomhurst:mainfrom
bfs2021:fix/rs2007-release-headers
Oct 21, 2026
Merged

thomhurst merged 1 commit into
thomhurst:mainfrom
bfs2021:fix/rs2007-release-headers

Conversation

@bfs2021

@bfs2021 bfs2021 commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Description

AnalyzerReleases.Shipped.md in both analyzer projects groups its rules under #### category headings. The release-tracking format only accepts ## Release X and ### New Rules / ### Removed Rules / ### Changed Rules before a rule table, so the parser rejects the first category heading: every build of src/TUnit.Analyzers/TUnit.Analyzers.csproj and src/TUnit.Assertions.Analyzers/TUnit.Assertions.Analyzers.csproj emits RS2007, and release tracking stops there.

This merges each file's tables into the single ### New Rules table, keeping the rows in their existing category order.

Related Issue

Fixes #7171

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Performance improvement
  • Refactoring (no functional changes)

Checklist

Required

  • I have read the Contributing Guidelines
  • If this is a new feature, I started a discussion first and received agreement — not applicable, this is a metadata fix
  • My code follows the project's code style (modern C# syntax, proper naming conventions) — no C# changed
  • I have written tests that prove my fix is effective or my feature works — the reproduction is the build itself (red-green below); no unit test applies to a markdown metadata file

TUnit-Specific Requirements

  • Dual-Mode Implementation — not applicable: no test discovery or execution change
  • Snapshot Tests — not applicable: no generator output or public API change

Testing

  • dotnet build src/TUnit.Analyzers/TUnit.Analyzers.csproj -c Release: 0 errors, no RS2007.
  • dotnet build src/TUnit.Assertions.Analyzers/TUnit.Assertions.Analyzers.csproj -c Release: 0 errors, no RS2007.
  • Red-green: restoring the two original files and rebuilding reports RS2007 ... AnalyzerReleases.Shipped.md(5,1) again; the patched files remove it.
  • Locally the installed SDK is 10.0.301, so I built with a temporary global.json pin at that version and reverted it afterwards; no SDK change is committed.

Once the files parse, the builds also report RS2000 for TUNIT_LANG_001 (reported by LanguageVersionAnalyzer, absent from both release files) and RS2002 for the rules listed in AnalyzerReleases.Unshipped.md that no analyzer supports. Those are pre-existing tracking gaps rather than a consequence of the headings, so I left them out of this change.

Summary by CodeRabbit

  • Documentation
    • Consolidated analyzer rule listings into unified tables for easier browsing.
    • Preserved all existing analyzer and assertion rule entries, including their categories, severities, and notes.
    • Simplified the release documentation by removing separate subsection headings for rule groupings, migration support, best practices, and related classifications.

AnalyzerReleases.Shipped.md grouped its rules under '####' category
headings. The release-tracking parser only accepts '## Release X' and
'### New Rules' / '### Removed Rules' / '### Changed Rules' before a
rule table, so it rejected the first category heading: both analyzer
projects emitted RS2007 on every build and release tracking stopped
there.

Remove the category headings and the repeated table headers, keeping
the rows in their existing category order. Both files now parse and the
builds are free of RS2007.

Fixes thomhurst#7171
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T02:30:06.143152Z 8f0681c PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: faca5ec6-6102-4a79-920e-79c00e7fc2b6
📥 Commits

Reviewing files that changed from the base of the PR and between fe2eeea and 8f0681c.

📒 Files selected for processing: 2
  • src/TUnit.Analyzers/AnalyzerReleases.Shipped.md
  • src/TUnit.Assertions.Analyzers/AnalyzerReleases.Shipped.md

Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 7 remain after this review.

📝 Walkthrough

The analyzer release files consolidate rule entries under the New Rules tables. The changes remove category subsection headings and table separators. The nine assertion rule entries retain their categories, severities, and notes.

Changes: Analyzer Release Tables

Layer / File(s) Summary
Consolidated release rule tables
src/TUnit.Analyzers/AnalyzerReleases.Shipped.md, src/TUnit.Assertions.Analyzers/AnalyzerReleases.Shipped.md
Both files remove category subsection headings and consolidate rules under New Rules. The nine assertion rules retain their categories, severities, and notes.

Priority: ➖ Normal

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 8f068

No actionable merge-blocking risk is identified.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly summarizes the main change: merging analyzer release tables under one New Rules section. It also identifies RS2007, which is directly related to the change.
Linked Issues check Passed Issue #7171 requires removal of invalid #### headings from both shipped release files and one ### New Rules table per file. The diff removes the category headings and repeated table headers while …
Out of Scope Changes check Passed The diff changes only the two shipped analyzer release metadata files named in issue #7171. It removes invalid release markup, merges the existing tables, preserves the rule entries, and adds a final …
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Full details: Linked Issues check

Explanation

Issue #7171 requires removal of invalid #### headings from both shipped release files and one ### New Rules table per file. The diff removes the category headings and repeated table headers while preserving the rule rows and category order. The reported Release builds for both analyzer projects complete without RS2007. The reported RS2000 and RS2002 diagnostics were checked and identified as pre-existing tracking gaps.

Full details: Out of Scope Changes check

Explanation

The diff changes only the two shipped analyzer release metadata files named in issue #7171. It removes invalid release markup, merges the existing tables, preserves the rule entries, and adds a final newline. These changes directly support the linked issue.

Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checked the tables neat
The headings hopped away
The rules stayed in their rows
Their notes and tags remained
Then carrots marked the end of day

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Low impact] The PR appears safe to merge.

Summary

Both analyzer projects now keep their shipped rules in one table under ### New Rules.

  • Both analyzer projects keep their shipped rules in one table.

No actionable issues found. Builds were not run during this review.

Reviews (1) · Last reviewed commit: "fix(analyzers): merge the category table..." · Reviewed by Greptile

@github-actions

Copy link
Copy Markdown
Contributor

Review: LGTM. The change is metadata-only. Merging each file's category tables into the single ### New Rules table matches the Roslyn release-tracking format, which is what clears RS2007. I checked that every row is kept, in its original order. Dropping the #### headings also loses the category grouping from the file. That's an acceptable cost, because the format has no place for it. The trailing newline fix is also fine.

The PR description notes pre-existing RS2000 (TUNIT_LANG_001) and RS2002 (Unshipped rules with no supporting analyzer) gaps that this change deliberately leaves out. Please make sure those are tracked in a follow-up issue, so the release-tracking cleanup gets finished.

I could not run the build here. The review rests on reading the diff and on the red/green evidence in the description.

@thomhurst

Copy link
Copy Markdown
Owner

Thanks @bfs2021 !

@thomhurst
thomhurst enabled auto-merge (squash) October 21, 2026 09:06
@thomhurst
thomhurst disabled auto-merge October 21, 2026 10:42
@thomhurst
thomhurst merged commit 6e46466 into thomhurst:main Oct 21, 2026
17 of 19 checks passed
This was referenced Oct 26, 2026

This branch was successfully deployed

1 active deployment
Pull Requests — 8f0681c9 Deployed Oct 21, 2026 by bfs2021 via modularpipeline (ubuntu-latest) #20268
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

RS2007: '####' category headings in AnalyzerReleases.Shipped.md are invalid release headers

2 participants