Skip to content

Conversation

@DrBarnabus
Copy link
Owner

@DrBarnabus DrBarnabus commented Nov 16, 2025

Summary by CodeRabbit

  • Chores
    • Upgraded GitHub Actions workflow versions for enhanced CI/CD reliability
    • Extended project support to .NET 10 alongside existing frameworks (v8 and v9)
    • Updated .NET SDK versions to latest patches
    • Updated build and version configuration settings
    • Expanded dependency management for new target framework

@coderabbitai
Copy link

coderabbitai bot commented Nov 16, 2025

Walkthrough

GitHub Actions workflows upgraded to newer action versions (v5, specific commit hashes). Added .NET 10 SDK support and updated existing SDKs (v8: 8.0.416, v9: 9.0.307). GitVersion configuration updated from tag: preview to label: preview. Global .NET SDK updated to 10.0.100. All test projects now target net10.0 in addition to existing frameworks, with corresponding package lock file updates.

Changes

Cohort / File(s) Change Summary
CI Workflow Updates
.github/workflows/ci.yml
Upgraded GitHub Actions (checkout, setup-dotnet, gitversion, codecov, upload-artifact) to newer versions. Added .NET 10 installation step. Updated .NET 8 (8.0.411→8.0.416) and .NET 9 (9.0.301→9.0.307) versions. Updated GitVersion from v5.x to v6.x with new commit hash. Added DOTNET_INSTALL_DIR environment variable.
GitVersion Configuration
GitVersion.yml
Changed pre-release identifier configuration from tag: preview to label: preview.
Global SDK Version
global.json
Updated default .NET SDK from 9.0.200 to 10.0.100.
Test Project Framework Targets
src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj, src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj, src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj, src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj
Added net10.0 target framework alongside existing net9.0 and net8.0.
Package Lock Files
src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json, src/CompositeKey.Analyzers.UnitTests/packages.lock.json, src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json, src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json
Added net10.0 target framework entries with complete dependency graphs (direct and transitive). Existing net8.0 and net9.0 entries preserved.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

  • GitHub Actions workflow: Verify new action versions are compatible and all steps reference correct versions
  • Package lock files: Confirm net10.0 dependency resolution aligns with existing frameworks and no conflicts are introduced
  • GitVersion configuration: Validate label: preview syntax and compatibility with version 6.x

Possibly related PRs

Poem

🐰 A rabbit hops through workflows new,
.NET 10 arrives on cue!
Version upgrades, frameworks dance,
From version tags to labels' chance—
Our builds shall bound with swifter pace! 🚀

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main changes: updating the CI pipeline (GitHub Actions workflows, .NET SDK versions, GitVersion configuration) and adding .NET 10.0 test support across multiple test projects.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch add-net10-tests

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

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

@codecov
Copy link

codecov bot commented Nov 16, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.67%. Comparing base (42f9674) to head (f8880e7).
⚠️ Report is 1 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #34   +/-   ##
=======================================
  Coverage   91.67%   91.67%           
=======================================
  Files          34       34           
  Lines        1525     1525           
  Branches      249      249           
=======================================
  Hits         1398     1398           
  Misses         60       60           
  Partials       67       67           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (3)
.github/workflows/ci.yml (3)

58-66: NuGet cache: redundant restore key

restore-keys repeats the primary key line; it’s not harmful but redundant. Consider dropping the duplicate.


88-93: Codecov coverage glob may miss nested paths

Depending on collector layout, coverage files can land under deeper subfolders. Prefer a recursive glob.

Apply this minimal change:

-          files: ./unit-test-results/*/coverage.opencover.xml
+          files: ./unit-test-results/**/coverage.opencover.xml

Please confirm the XPlat collector writes coverage.opencover.xml at that location for multi-target runs on your runner.


33-45: Optional refactor: Remove redundant DOTNET_INSTALL_DIR env vars

actions/setup-dotnet@v5 defaults to /usr/share/dotnet on ubuntu-latest runners, so the DOTNET_INSTALL_DIR environment variables on lines 37 and 44 are unnecessary. Consider removing them to simplify the workflow configuration.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 42f9674 and f8880e7.

📒 Files selected for processing (11)
  • .github/workflows/ci.yml (4 hunks)
  • GitVersion.yml (1 hunks)
  • global.json (1 hunks)
  • src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj (1 hunks)
  • src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json (1 hunks)
  • src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj (2 hunks)
  • src/CompositeKey.Analyzers.UnitTests/packages.lock.json (1 hunks)
  • src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj (1 hunks)
  • src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json (1 hunks)
  • src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj (1 hunks)
  • src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json (1 hunks)
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2025-08-28T19:57:32.588Z
Learnt from: DrBarnabus
Repo: DrBarnabus/CompositeKey PR: 30
File: src/CompositeKey.Analyzers.Common.UnitTests/Validation/TemplateValidationTests.cs:11-42
Timestamp: 2025-08-28T19:57:32.588Z
Learning: In CompositeKey projects, test files use global usings configuration (likely through ImplicitUsings or similar mechanisms) for common imports like xUnit and Shouldly, eliminating the need for explicit using directives in individual test files.

Applied to files:

  • src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json
  • src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj
  • src/CompositeKey.Analyzers.UnitTests/packages.lock.json
  • src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json
  • src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj
  • src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json
📚 Learning: 2025-08-28T19:57:32.588Z
Learnt from: DrBarnabus
Repo: DrBarnabus/CompositeKey PR: 30
File: src/CompositeKey.Analyzers.Common.UnitTests/Validation/TemplateValidationTests.cs:11-42
Timestamp: 2025-08-28T19:57:32.588Z
Learning: In CompositeKey projects, test files use global usings (typically in GlobalUsings.cs files or via ImplicitUsings in project files) for common imports like xUnit and Shouldly, so individual test files don't need explicit using directives for these frameworks.

Applied to files:

  • src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json
  • src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj
  • src/CompositeKey.Analyzers.UnitTests/packages.lock.json
  • src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json
  • src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj
  • src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json
📚 Learning: 2025-08-28T19:57:32.588Z
Learnt from: DrBarnabus
Repo: DrBarnabus/CompositeKey PR: 30
File: src/CompositeKey.Analyzers.Common.UnitTests/Validation/TemplateValidationTests.cs:11-42
Timestamp: 2025-08-28T19:57:32.588Z
Learning: In CompositeKey projects, test files use global usings (typically in GlobalUsings.cs files) for common imports like xUnit and Shouldly, so individual test files don't need explicit using directives for these frameworks.

Applied to files:

  • src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json
  • src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj
  • src/CompositeKey.Analyzers.UnitTests/packages.lock.json
  • src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json
  • src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj
  • src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json
📚 Learning: 2025-08-28T19:57:32.588Z
Learnt from: DrBarnabus
Repo: DrBarnabus/CompositeKey PR: 30
File: src/CompositeKey.Analyzers.Common.UnitTests/Validation/TemplateValidationTests.cs:11-42
Timestamp: 2025-08-28T19:57:32.588Z
Learning: CompositeKey test projects use MSBuild's <Using Include="..." /> elements in .csproj files combined with <ImplicitUsings>enable</ImplicitUsings> in Directory.Build.props to automatically include Xunit and Shouldly namespaces, eliminating the need for explicit using statements in test files.

Applied to files:

  • src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj
  • src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json
  • src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj
  • src/CompositeKey.Analyzers.UnitTests/packages.lock.json
  • src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json
  • src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj
  • src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json
🔇 Additional comments (15)
global.json (1)

3-3: SDK 10.0.100 alignment looks good

Matches the added net10.0 targets and setup-dotnet steps. No further notes.

src/CompositeKey.Analyzers.UnitTests/CompositeKey.Analyzers.UnitTests.csproj (1)

4-4: Add net10.0 target — LGTM

Multi-targeting net10.0;net9.0;net8.0 is consistent with CI and global.json.

src/CompositeKey.SourceGeneration.FunctionalTests/packages.lock.json (1)

4-1121: Lock graph extended for net10.0 — looks consistent

The net10.0 block mirrors net8.0/net9.0 and aligns with test TFMs. Ensure dotnet restore --locked-mode remains green post-merge (CI already uses it).

Please confirm there are no unintended version drifts for transitive Roslyn packages across TFMs.

src/CompositeKey.SourceGeneration.UnitTests/packages.lock.json (1)

4-323: net10.0 lock additions and central transitive entries

Entries for Roslyn (4.8.0) and test stack look coherent with other TFMs.

src/CompositeKey.Analyzers.Common.UnitTests/packages.lock.json (1)

4-323: Lockfile: add net10.0 — LGTM

Matches package set used elsewhere; no red flags.

.github/workflows/ci.yml (5)

46-51: Install .NET 10.0.100 — alignment good

Matches global.json and new TFMs.


80-83: JUnit result file naming — good

Use of {framework} avoids collisions across TFMs; nice.


107-112: Upload artefacts — OK

Pinning to actions/upload-artifact@v5 is fine; artefact name and path look correct.


28-28: No issues — actions/checkout@v5 is current and stable

The latest stable major version of actions/checkout is v5, with v6 currently in beta. The specified version is properly published and supported.


54-57: GitVersion setup action and versionSpec 6.x combination is supported

The GitTools actions (setup and execute) support installing and running GitVersion 6.x via versionSpec: '6.x'. The combination you've pinned is correct. No action required.

src/CompositeKey.SourceGeneration.FunctionalTests/CompositeKey.SourceGeneration.FunctionalTests.csproj (1)

4-4: Add net10.0 target — LGTM

Consistent with the rest of the PR and CI.

GitVersion.yml (1)

4-4: No changes required — label is the correct property for GitVersion 6.x

GitVersion's branch configuration uses the label property for the pre-release identifier, confirming your code change is correct. The older tag key is obsolete in v6.x.

src/CompositeKey.Analyzers.Common.UnitTests/CompositeKey.Analyzers.Common.UnitTests.csproj (1)

4-4: Framework targeting order appears correct; verify .NET 10 stability.

Line 4 now targets net10.0;net9.0;net8.0 with net10.0 listed first (idiomatic for multi-targeting). No changes to PackageReferences or ProjectReferences, which is appropriate since test infrastructure (xUnit, Shouldly) typically works across frameworks.

Before merge, please verify:

  • .NET 10.0 is a stable/production-ready release (not preview)
  • All tests pass on net10.0 in the CI pipeline
src/CompositeKey.SourceGeneration.UnitTests/CompositeKey.SourceGeneration.UnitTests.csproj (1)

4-4: Framework targeting consistent with related test project.

Line 4 targeting matches the pattern in CompositeKey.Analyzers.Common.UnitTests.csproj (net10.0;net9.0;net8.0). Line 37 ProjectReference correctly constrains the referenced SourceGeneration project to netstandard2.0, which is compatible across all three test frameworks.

src/CompositeKey.Analyzers.UnitTests/packages.lock.json (1)

4-799: Dependency lock file correctly updated for net10.0 and net9.0.

Lines 4–799 (net10.0) and 1596–2391 (net9.0) are new framework blocks with comprehensive, consistent dependency resolution. All direct package versions are identical across net10.0, net9.0, and net8.0 (e.g. xunit 2.9.3, Shouldly 4.3.0, Microsoft.NET.Test.Sdk 17.14.1), ensuring reproducible builds. Transitive dependency graphs are complete and well-formed JSON.

No issues detected.

Also applies to: 1596-2391

@DrBarnabus DrBarnabus merged commit ff99926 into main Nov 16, 2025
4 checks passed
@DrBarnabus DrBarnabus deleted the add-net10-tests branch November 16, 2025 17:04
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.

2 participants