Skip to content

#2-standardize-repos#4

Closed
kploch wants to merge 7 commits into
mainfrom
#2-standardize-repos
Closed

#2-standardize-repos#4
kploch wants to merge 7 commits into
mainfrom
#2-standardize-repos

Conversation

@kploch
Copy link
Copy Markdown
Contributor

@kploch kploch commented Aug 10, 2025

User description

#2 Standardize editor config and dependencies across repositories

Summary by CodeRabbit

  • Chores

    • Centralized and modernized dependency versions (broad upgrade to latest platform), new centralized package manifests, updated package management and build config.
    • Updated repository tooling and configs (ignore rules, package source token format, editor workspace and editor settings).
    • Added a repository preparation script.
  • Style

    • Large-scale editorconfig updates to standardize formatting, naming and analyzer severities across the repo.
  • Documentation

    • Added testing guidelines and contributor-facing documentation.

✏️ Tip: You can customize this high-level summary in your review settings.


CodeAnt-AI Description

Standardize editor settings and analyzer rules; add a PowerShell repo preparation script

What Changed

  • Added scripts/prepare-repo.ps1 that installs or updates posh-git and git-posh and automatically clones or pulls the mrploch-development repository into a sibling folder for one-step local repo setup.
  • Normalized and expanded .editorconfig files: diagnostic keys and section headers converted to lower-case, many analyzer severities clarified (notably nullability and IDE rules), and new file-type indentation rules added so different file extensions enforce consistent tab/space and indent sizes.
  • Introduced ReSharper formatting and inspection settings plus new naming rules (local constants and private instance fields) to align coding style and reduce cross-repo formatting differences.
  • Consolidated analyzer and package-related option files to enforce stricter nullability errors and clearer analyzer behaviors across projects.

Impact

✅ Easier local repo setup with one script
✅ Consistent analyzer warnings and nullability errors across projects
✅ Uniform formatting and naming behavior across editors and repositories

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Summary by Bito

This pull request standardizes editor configurations, analyzer rules, and package versions across repositories, introduces a PowerShell setup script for local repository preparation, and updates various configuration files to enhance developer experience and maintainability.

Detailed Changes
  • Updated analyzer package versions and added new analyzers in dependencies/Analyzers.Global.Packages.props for improved code quality.
  • Introduced centralized common package versions in dependencies/Common.Packages.props to ensure uniformity across projects.
  • Updated Microsoft extensions packages to version 10.0.1 and added new packages in dependencies/MicrosoftExtensions.Net9.Packages.props.
  • Standardized .editorconfig files in editor-config/ directory for consistent formatting and analyzer settings across repositories.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Summary of Changes

Hello @kploch, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

I've created this pull request to standardize editor configurations and dependency management across our repositories. The primary goal is to ensure consistency in how we handle ignored files and manage NuGet package versions, making development more streamlined and reducing potential conflicts.

Highlights

  • Git Ignore Standardization: Expanded the .gitignore file to include a comprehensive set of ignore rules for Visual Studio, .NET Core, ReSharper, NuGet, and Rider-specific files, based on common best practices.
  • .NET Package Updates: Updated existing Microsoft.Extensions and Entity Framework Core package versions to 9.0.8 and introduced several new related packages to MicrosoftExtensions.Net9.Packages.props.
  • New Logging Dependency Standard: Introduced a new Serilog.Logging.Packages.props file to standardize Serilog logging package versions across projects.
  • New Testing Dependency Standard: Added a new Testing.Packages.props file to standardize a comprehensive suite of testing frameworks and libraries, including AutoFixture, FluentAssertions, Moq, and Xunit.
  • NuGet Configuration Update: Adjusted the NuGet.config to use the correct syntax for referencing the GitHub packages token.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request standardizes repository configurations by updating .gitignore, centralizing dependencies in .props files, and fixing NuGet.config. The changes improve consistency. My review includes suggestions to fix a typo and remove a redundancy in .gitignore, remove a UTF-8 BOM from a new .props file for consistency, and address the mixing of xUnit major versions in testing dependencies to prevent potential conflicts.

Comment thread .gitignore Outdated
Comment thread dependencies/Testing.Packages.props Outdated
Comment on lines +38 to +54
<PackageVersion Include="xunit.v3" Version="3.0.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.analyzers" Version="1.23.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageVersion>
<PackageVersion Include="xunit.extensibility.core" Version="2.9.3" />
<PackageVersion Include="xunit.v3.core" Version="3.0.0" />
<PackageVersion Include="xunit.v3.extensibility.core" Version="3.0.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageVersion>
<PackageVersion Include="xunit.v3.runner.msbuild" Version="3.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageVersion>
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

This file defines package versions for both xUnit v2 (e.g., xunit 2.9.3) and xUnit v3 (e.g., xunit.v3 3.0.0) simultaneously. Mixing major versions of a testing framework like this can lead to assembly conflicts and unpredictable behavior in test projects. It's highly recommended to standardize on a single version of xUnit across the repository to ensure consistency and avoid potential issues. If a migration is underway, consider managing these versions in separate files or providing clear guidance on which to use.

Comment thread .gitignore Outdated
Comment thread dependencies/Serilog.Logging.Packages.props Outdated
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Dec 9, 2025

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Dec 9, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

📝 Walkthrough

Walkthrough

This PR updates repository infra: expands .gitignore, centralizes and upgrades many NuGet package versions (including a net10.0 target and Microsoft.Extensions/EF/Serilog/testing manifests), normalizes and expands multiple .editorconfig files, changes NuGet token syntax, adds a repo setup PowerShell script, and adds various workspace/editor settings and docs.

Changes

Cohort / File(s) Summary
Git ignore
\.gitignore
Replaced minimal .idea/ entry with an extensive Visual Studio / tooling .gitignore covering build outputs, caches, IDE and tooling artifacts
Microsoft / EF / Extensions versions
dependencies/MicrosoftExtensions.Net9.Packages.props
Bumped many Microsoft.* package versions to 10.0.1 and added <TargetFrameworkVersion>net10.0</TargetFrameworkVersion>; consolidated EF Core, Microsoft.Extensions, and related packages
Serilog package manifest
dependencies/Serilog.Logging.Packages.props
New MSBuild props file declaring Serilog and related package versions
Testing package manifest
dependencies/Testing.Packages.props
New MSBuild props file adding pinned testing dependencies (xUnit, Moq, AutoFixture, coverlet, analyzers, etc.) with IncludeAssets/PrivateAssets where applicable
New centralized package props
dependencies/Common.Packages.props, dependencies/Ploch.Packages.props, dependencies/Spectre.Console.Packages.props
Added multiple new centralized PackageVersion manifests for common libs, Ploch packages, and Spectre.Console family
Analyzers updates
dependencies/Analyzers.Global.Packages.props
Bumped analyzer package versions (e.g., NetAnalyzers → 10.0.100, SonarAnalyzer → 10.16.0, Roslynator minor bump); formatting/spacing tweaks in the file
EditorConfig hierarchies & rules
editor-config/all-rules-stylecop.editorconfig, editor-config/editorconfig-hierarchy/.editorconfig, editor-config/editorconfig-hierarchy/app-repository/.editorconfig, editor-config/editorconfig-hierarchy/library-repository/.editorconfig, editor-config/temporary-versions/*.editorconfig
Large-scale normalization and additions: lowercased section/diagnostic identifiers, added/adjusted many dotnet_naming_rules and ReSharper settings, new per-extension indent rules, added max line length and other style settings; several temporary/ruleset variants added/rewritten
EditorConfig temporary rule sets
editor-config/temporary-versions/my-rules.editorconfig, editor-config/temporary-versions/temp-mine.editorconfig, editor-config/temporary-versions/additional-options.editorconfig, editor-config/temporary-versions/all-rules-sorted.editorconfig
Added/overhauled large lists of analyzer severities and style rules (many entries set to warning/none), consolidations and reformatting
NuGet config
repository-config/root-folder/NuGet.config
Changed GitHub package source token reference from %MRPLOCH_GITHUB_PACKAGES_TOKEN% to $(MRPLOCH_GITHUB_PACKAGES_TOKEN) (MSBuild property style)
Repo prep script
scripts/prepare-repo.ps1
New PowerShell script to install/update posh-git/git-posh, clone or pull ploch-development, and validate Git availability
Workspace & editor settings
.vscode/settings.json, mrploch-development.code-workspace
Added files.exclude entries to hide VCS and common generated files in editor/workspace
Docs / guidelines
.junie/guidelines.md
New testing guidelines and conventions document for Junie (xUnit v3, AutoFixture, FluentAssertions, test patterns)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hopped through configs, tidy and spry,
Pinned packages higher, reached for the sky,
Editor rules whispered, “line length, please,”
Scripts brought the burrow tools with ease,
Now the warren hums—neat, aligned, and spry. 🥕

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title '#2-standardize-repos' is vague and generic, using a ticket reference rather than a descriptive summary of the actual changes. Replace with a descriptive title that summarizes the main changes, such as 'Standardize editor configs, dependencies, and add repo setup script' or similar.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

@codeant-ai codeant-ai Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files label Dec 9, 2025
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Dec 9, 2025

Nitpicks 🔍

🔒 No security issues identified
⚡ Recommended areas for review

  • Unverified external code
    The script installs modules from the gallery and clones a GitHub repository without verifying publishers, repository, or commit SHA. This exposes the environment to supply-chain risks.

  • Version consistency
    The props file pins many packages to Version="9.0.8". Verify that this single version is correct for every package (some packages previously were 9.0.7). Confirm there are no packages that must remain at a different minor/patch version and ensure other repo props are aligned to avoid transitive/restore surprises.

  • Central package file conventions
    If this file is intended to be used for central package management, confirm filename and placement (e.g., Directory.Packages.props at repo root) and validate that MSBuild will import it. Nonstandard naming/placement may prevent the versions from being applied.

  • Leading BOM / invalid first character
    The file starts with an invisible BOM character before the element. This can break XML/MSBuild parsing in some environments and CI agents. Verify the file is encoded UTF-8 without BOM or explicitly add a proper XML declaration.

  • Mixed xUnit major versions
    The file contains both xunit v2 and xunit v3 packages (xunit 2.9.3 alongside xunit.v3 and xunit.v3.* packages). This can cause test discovery/runner conflicts or ambiguous package resolution. Verify intended test framework version and remove or align packages to a single major version.

  • Unresolved TODOs / explicit 'none' entries
    Several rules are set to none with # todo comments (for example dotnet_diagnostic.ca1824.severity = none # todo: check what it is). Leaving these unresolved may unintentionally silence important analyzers. Verify each todo and confirm whether none is deliberate.

  • Inconsistent ID casing
    Diagnostic IDs and headers were changed from the prior uppercase format (e.g., CA1001, SA1600, S1109) to lowercase (ca1001, sa1600, s1109). Some tooling and human readers expect the canonical uppercase form; confirm the analyzer(s) that read this file are case-insensitive. If tooling is case-sensitive, this will break rule application.

  • Duplicate Rules
    Many diagnostics appear more than once in this file (same diagnostic ID defined in multiple sections). Duplicate definitions can cause ambiguity about which severity wins and make future changes error-prone. Review and deduplicate so each diagnostic ID is defined once (or intentionally overridden with a clear comment).

  • ClearTextPassword exposure
    The file contains a ClearTextPassword element referencing a credential. Even though it currently references a variable, keeping credential entries in a tracked NuGet.config can lead to accidental disclosure (e.g., if CI replaces the variable, or if someone replaces it locally). Consider using a credential provider or injecting credentials at runtime via CI secret mechanism.

  • Variable syntax mismatch
    The new line uses MSBuild-style $(VAR) syntax for the password value. NuGet's config typically expects environment variables in %ENV% form or will treat unknown syntax literally. If the token is not expanded, authentication to the GitHub Packages feed will fail or the literal string $(MRPLOCH_GITHUB_PACKAGES_TOKEN) may be used as the password.

  • Naming-rule behavior change
    The PR changes naming-rule styles for private static fields and readonly fields to pascal_case (previously lower_camel_case_style). That will change analyzer-reported issues and may require bulk code changes. Confirm this was intentional and coordinate with teams that need the new naming style.

  • Diagnostic key casing
    Several diagnostic keys were added/modified with different casing and names (e.g. dotnet_diagnostic.ide0001 vs previously IDE0001, and dotnet_analyzer_diagnostic.category-documentation vs category-documentationheader). Analyzer ID and property names are typically canonical — casing or small name differences can cause analyzers to ignore the setting. Verify the correct canonical names used by your analyzer versions.

  • Malformed severity token
    Some added lines contain invalid severity values (extra boolean tokens like "true:error" or "false:error"). These will likely be rejected by the editorconfig parser or analyzer tooling and should be corrected to a single valid severity (e.g., "error", "warning", "suggestion", "none").

  • Malformed glob pattern
    The combined glob token ".sarif.json.har" (and surrounding list) appears to be missing a comma, producing an invalid/incorrect pattern. This can cause the rule to not match the intended files (.sarif.json and .har) and may silently fail formatting/indent rules for those files.

  • Filename typo
    The workflow filename pattern contains "workflow.ym" which looks like a typo and will not match "workflow.yml" files used by CI/workflows. This will cause YAML workflow files to miss the intended indent rules.

  • Many "none" severities with TODO comments
    Several diagnostics are set to severity = none and annotated with # TODO: Review. These are intentional placeholders, but they should be audited (and consolidated) so consumers know which diagnostics intentionally disabled vs those left for later review.

Comment thread scripts/prepare-repo.ps1
if (-not (Get-Command git -ErrorAction SilentlyContinue))
{
Write-Error "Git is not installed or not in PATH."
exit 1
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: Using exit 1 when git is missing will terminate the entire PowerShell host process, which is often unintended when running the script from an interactive session and can cause loss of work, whereas throwing an error stops the script but keeps the session alive. [logic error]

Severity Level: Minor ⚠️

Suggested change
exit 1
throw "Git is required but not installed or not in PATH."
Why it matters? ⭐

The recommendation is reasonable: throw keeps the interactive session alive while still signalling a failure. This is generally preferable for scripts run interactively. However, note that some automation systems expect the script process to exit with a non-zero code; changing to throw will still result in a non-zero exit in most CI contexts but can change exact behavior. The suggestion fixes a real UX/runtime concern and is not merely cosmetic.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** scripts/prepare-repo.ps1
**Line:** 38:38
**Comment:**
	*Logic Error: Using `exit 1` when git is missing will terminate the entire PowerShell host process, which is often unintended when running the script from an interactive session and can cause loss of work, whereas throwing an error stops the script but keeps the session alive.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

Comment thread scripts/prepare-repo.ps1
}
Import-Module git-posh -ErrorAction SilentlyContinue
git clone https://github.com/mrploch/mrploch-development.git ploch-development
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The result of the repository clone command is never checked, so if git clone fails (e.g., network error, auth issue) the script will continue as if the repository was successfully created, leaving the expected folder missing and causing confusing downstream behavior. [logic error]

Severity Level: Minor ⚠️

Suggested change
}
if ($LASTEXITCODE -ne 0)
{
throw "Git clone failed with exit code $LASTEXITCODE."
}
Why it matters? ⭐

The suggestion addresses a real failure mode: git clone can fail and the script currently continues as if the repo was created. Checking $LASTEXITCODE (or otherwise testing the existence of the folder after clone) is a practical, minimal fix that prevents confusing downstream errors. This is not a cosmetic change — it's a real runtime correctness fix.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** scripts/prepare-repo.ps1
**Line:** 42:42
**Comment:**
	*Logic Error: The result of the repository clone command is never checked, so if `git clone` fails (e.g., network error, auth issue) the script will continue as if the repository was successfully created, leaving the expected folder missing and causing confusing downstream behavior.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

Comment thread scripts/prepare-repo.ps1
}
Import-Module git-posh -ErrorAction SilentlyContinue
git pull
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The git pull command's exit code is not checked, so if pulling latest changes fails (e.g., merge conflict, remote error) the script completes without signaling an error, leaving the repository in an outdated or inconsistent state. [logic error]

Severity Level: Minor ⚠️

Suggested change
}
if ($LASTEXITCODE -ne 0)
{
throw "Git pull failed with exit code $LASTEXITCODE."
}
Why it matters? ⭐

Like the clone case, git pull can fail (network, auth, conflicts) and the script currently doesn't propagate that failure. Checking $LASTEXITCODE and failing loudly is appropriate to avoid leaving the repo in an unexpected state. This fixes a real operational issue, not just style.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** scripts/prepare-repo.ps1
**Line:** 54:54
**Comment:**
	*Logic Error: The `git pull` command's exit code is not checked, so if pulling latest changes fails (e.g., merge conflict, remote error) the script completes without signaling an error, leaving the repository in an outdated or inconsistent state.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

Comment thread editor-config/editorconfig-hierarchy/.editorconfig
dotnet_diagnostic.cs8714.severity = error # The type cannot be used as type parameter in the generic type or method. Nullability of type argument doesn't match 'notnull' constraint.
dotnet_diagnostic.cs8762.severity = error # Parameter must have a non-null value when exiting.
dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.
dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: This diagnostic is configured twice with identical settings, creating unnecessary duplication that can lead to confusion or inconsistent updates if one entry is changed later and the other is forgotten. [possible bug]

Severity Level: Critical 🚨

Suggested change
dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.
Why it matters? ⭐

The diff indeed shows cs8763 configured twice (lines 43-44). Both entries are identical; this is redundant and harmless to remove. Consolidating to a single entry reduces maintenance burden and avoids confusion — a valid cleanup.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** editor-config/temporary-versions/additional-options.editorconfig
**Line:** 44:44
**Comment:**
	*Possible Bug: This diagnostic is configured twice with identical settings, creating unnecessary duplication that can lead to confusion or inconsistent updates if one entry is changed later and the other is forgotten.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

dotnet_diagnostic.SA1011.severity = warning # stylecop
dotnet_diagnostic.SA1012.severity = warning # stylecop
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The rule severity for SA1013 is defined twice with identical values, which is redundant and can cause confusion when maintaining the configuration; keep a single definition for this rule. [possible bug]

Severity Level: Critical 🚨

Suggested change
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
Why it matters? ⭐

The PR file indeed contains two identical entries for SA1013 (lines 24–25 in the new hunk). This is harmless at runtime but is a clear duplication that makes the config harder to maintain and can confuse future edits. Removing the duplicate keeps behavior the same while improving maintainability.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** editor-config/temporary-versions/all-rules-sorted.editorconfig
**Line:** 25:25
**Comment:**
	*Possible Bug: The rule severity for `SA1013` is defined twice with identical values, which is redundant and can cause confusion when maintaining the configuration; keep a single definition for this rule.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

dotnet_diagnostic.SA1412.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1413.severity = warning # stylecop
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The rule severity for SA1500 is specified twice with the same value, which is unnecessary duplication and might lead to confusion about which entry should be edited in the future. [possible bug]

Severity Level: Critical 🚨

Suggested change
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
Why it matters? ⭐

The file contains two identical SA1500 entries (lines 126–127 in the new hunk). Like the previous case this is a maintenance duplication rather than a functional bug. Consolidating to a single line reduces noise and future risk of inconsistent edits.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** editor-config/temporary-versions/all-rules-sorted.editorconfig
**Line:** 127:127
**Comment:**
	*Possible Bug: The rule severity for `SA1500` is specified twice with the same value, which is unnecessary duplication and might lead to confusion about which entry should be edited in the future.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

dotnet_diagnostic.SA1501.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1502.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1503.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1503.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The rule severity for SA1503 is duplicated with identical content, which adds no functional value and makes the configuration harder to maintain. [possible bug]

Severity Level: Critical 🚨

Suggested change
dotnet_diagnostic.SA1503.severity = none # TODO: Review # stylecop
Why it matters? ⭐

The PR shows SA1503 duplicated (lines 129 and 131 in the new hunk). This is redundant configuration; removing the duplicate improves clarity and prevents future drift without changing behavior.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** editor-config/temporary-versions/all-rules-sorted.editorconfig
**Line:** 131:131
**Comment:**
	*Possible Bug: The rule severity for `SA1503` is duplicated with identical content, which adds no functional value and makes the configuration harder to maintain.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

dotnet_diagnostic.SA1506.severity = warning # stylecop
dotnet_diagnostic.SA1507.severity = warning # stylecop
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: The rule severity for SA1508 appears twice with the same value, which is redundant and could lead to maintenance mistakes if one is edited and the other forgotten. [possible bug]

Severity Level: Critical 🚨

Suggested change
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
Why it matters? ⭐

The file includes SA1508 twice (lines 136–137 in the new hunk). This is a non-functional duplication that should be consolidated to a single entry to keep the configuration tidy and avoid potential confusion later.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** editor-config/temporary-versions/all-rules-sorted.editorconfig
**Line:** 137:137
**Comment:**
	*Possible Bug: The rule severity for `SA1508` appears twice with the same value, which is redundant and could lead to maintenance mistakes if one is edited and the other forgotten.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

<github>
<add key="Username" value="kploch" />
<add key="ClearTextPassword" value="%MRPLOCH_GITHUB_PACKAGES_TOKEN%" />
<add key="ClearTextPassword" value="$(MRPLOCH_GITHUB_PACKAGES_TOKEN)" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Suggestion: Storing a GitHub Packages access token in clear text within NuGet.config creates a severe security risk because anyone with read access to the repository or build logs could exfiltrate and misuse the token; use environment-variable-backed secure credential providers or CI secret injection instead of a ClearTextPassword entry checked into source control. [security]

Severity Level: Critical 🚨

Suggested change
<add key="ClearTextPassword" value="$(MRPLOCH_GITHUB_PACKAGES_TOKEN)" />
<!-- GitHub Packages token is supplied securely via environment/credential provider; do not store secrets in source control -->
<!--<add key="ClearTextPassword" value="$(MRPLOCH_GITHUB_PACKAGES_TOKEN)" />-->
Why it matters? ⭐

The suggestion flags a real security concern: NuGet's ClearTextPassword element is intended to hold credentials and committing any literal secret there would be dangerous. In this PR the value is a variable reference ($(MRPLOCH_GITHUB_PACKAGES_TOKEN)) rather than the secret itself, which reduces immediate risk, but keeping a ClearTextPassword element tracked in source control can encourage accidental substitution of the real token or leak through misconfigured CI/credentials handling. Replacing the explicit ClearTextPassword entry with a comment and relying on a secure credential provider, CI secret injection, or protected environment variables is a safer pattern and prevents accidental credential commits or misuse.

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** repository-config/root-folder/NuGet.config
**Line:** 11:11
**Comment:**
	*Security: Storing a GitHub Packages access token in clear text within NuGet.config creates a severe security risk because anyone with read access to the repository or build logs could exfiltrate and misuse the token; use environment-variable-backed secure credential providers or CI secret injection instead of a ClearTextPassword entry checked into source control.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.

@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Dec 9, 2025

CodeAnt AI finished reviewing your PR.

Copy link
Copy Markdown

@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: 14

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
editor-config/editorconfig-hierarchy/.editorconfig (2)

7-7: Fix malformed editorconfig key on Line 7.

The key is concatenated incorrectly: max_line_lengtheditorconfig should be max_line_length. This will be ignored by editorconfig parsers.

 insert_final_newline = true
 max_line_length = 160
-max_line_lengtheditorconfig = 160
 trim_trailing_whitespace = true

123-124: Resolve conflicting definitions for csharp_style_expression_bodied_operators.

Lines 123 and 124 define the same property with conflicting values. Line 123 has an invalid format (true:when_on_single_line). Keep line 124 and remove line 123.

 csharp_style_expression_bodied_methods = when_on_single_line:silent
-csharp_style_expression_bodied_operators = true:when_on_single_line
 csharp_style_expression_bodied_operators = when_on_single_line:silent
 csharp_style_expression_bodied_properties = when_on_single_line:silent
editor-config/editorconfig-hierarchy/app-repository/.editorconfig (2)

7-7: Fix malformed editorconfig key on Line 7.

The key is concatenated incorrectly: max_line_lengtheditorconfig should be max_line_length. This will be ignored by editorconfig parsers.

 insert_final_newline = true
 max_line_length = 160
-max_line_lengtheditorconfig = 160
 trim_trailing_whitespace = true

155-156: Resolve conflicting definitions for csharp_style_expression_bodied_operators.

Lines 155 and 156 define the same property with conflicting values. Line 155 has an invalid format (true:when_on_single_line). Keep line 156 and remove line 155.

 csharp_style_expression_bodied_methods = when_on_single_line:silent
-csharp_style_expression_bodied_operators = true:when_on_single_line
 csharp_style_expression_bodied_operators = when_on_single_line:silent
 csharp_style_expression_bodied_properties = when_on_single_line:silent
♻️ Duplicate comments (2)
dependencies/Serilog.Logging.Packages.props (1)

1-1: UTF-8 BOM detected at the start of the file.

The file begins with a UTF-8 Byte Order Mark (BOM), which is unnecessary for XML files and can cause issues with some tooling. Remove the BOM for consistency with other .props files.

dependencies/Testing.Packages.props (1)

38-46: xUnit v2 and v3 packages are both defined.

This file includes package versions for both xUnit v2 (e.g., xunit 2.9.3) and xUnit v3 (e.g., xunit.v3 3.0.0). If this is intentional to support migration, consider adding a comment to clarify which version should be used for new projects.

🧹 Nitpick comments (7)
.gitignore (2)

368-382: Redundant .idea* patterns after the catch-all.

Line 368 (**/.idea*/) already recursively ignores all .idea* directories and their contents. The specific file patterns on lines 369–382 that target files within those directories are redundant since gitignore implicitly ignores contents of matched directories.

To improve clarity, consider consolidating to just line 368 and removing lines 369–382, or document why the specific patterns are retained.


389-394: Consolidate overlapping .idea/vcs.xml patterns.

Both line 389 (/.idea/**/vcs.xml at root scope) and line 394 (**/.idea/vcs.xml global scope) target the same file. Clarify intent: remove the root-level pattern (line 389) if global coverage is sufficient, or remove line 394 if only root-level coverage is needed.

scripts/prepare-repo.ps1 (5)

1-12: Be cautious with auto‑install/update of posh-git and add basic error handling

Running Install-Module/Update-Module with -Force on every invocation can be slow and introduces environment‑wide side effects that callers might not expect, and failures (offline, untrusted repo, etc.) are not checked before continuing.

Consider:

  • Making module install/update optional (e.g., behind a flag or a separate “bootstrap” script), and
  • Checking for errors (e.g., $? or catching exceptions) and surfacing a clear failure before proceeding.

14-23: git-posh module looks unused and may be an unnecessary dependency

The script installs git-posh and imports it in both clone/pull branches, but no cmdlets or functions from that module are actually used; all operations are via the git executable. This adds install time and a dependency surface without clear benefit.

If the intent is just to run git clone / git pull, you can likely:

  • Drop the git-posh install/import entirely, or
  • Replace it with posh-git import if you specifically need its prompt/completion features elsewhere.

Also applies to: 40-53


25-30: Validate directory layout assumptions for ploch-development

$devFolder is computed as the parent of the script directory plus ploch-development. If this script is stored inside the same repo you’re cloning, this will create a nested ploch-development folder inside the repo, which may not be what you want.

It may be safer to:

  • Base the workspace on a more explicit root (e.g., a parameter, $env:USERPROFILE, or one more Split-Path up), or
  • At least document the expected layout so future callers don’t accidentally run the script from the wrong place.

31-54: Strengthen git error handling and verify target is a git repo

Right now, if git clone or git pull fails, the script will emit git’s error output but still “succeed” from the script’s perspective. Also, the else branch assumes $devFolder is a git repo without checking for a .git directory.

Consider:

  • Checking $LASTEXITCODE after git clone/git pull and converting non‑zero codes into a clear Write-Error + non‑zero script exit, and
  • Verifying that Join-Path $devFolder '.git' exists before attempting git pull, with a helpful error if it’s not actually a repo.

31-39: Prefer throw/tryfinally over exit to preserve caller control and always restore location

Using exit 1 when git is missing terminates the entire PowerShell host and skips the final Set-Location $loc. In many environments it’s preferable to let the caller decide how to handle errors.

You can instead:

  • Replace exit 1 with throw "Git is not installed or not in PATH.", and
  • Wrap the body in try { … } finally { Set-Location $loc } so the working directory is restored even on failure.

Also applies to: 47-55

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 93e9ada and 5bb6366.

📒 Files selected for processing (12)
  • .gitignore (1 hunks)
  • dependencies/MicrosoftExtensions.Net9.Packages.props (2 hunks)
  • dependencies/Serilog.Logging.Packages.props (1 hunks)
  • dependencies/Testing.Packages.props (1 hunks)
  • editor-config/all-rules-stylecop.editorconfig (1 hunks)
  • editor-config/editorconfig-hierarchy/.editorconfig (2 hunks)
  • editor-config/editorconfig-hierarchy/app-repository/.editorconfig (8 hunks)
  • editor-config/editorconfig-hierarchy/library-repository/.editorconfig (1 hunks)
  • editor-config/temporary-versions/additional-options.editorconfig (1 hunks)
  • editor-config/temporary-versions/all-rules-sorted.editorconfig (1 hunks)
  • repository-config/root-folder/NuGet.config (1 hunks)
  • scripts/prepare-repo.ps1 (1 hunks)
🧰 Additional context used
🪛 Gitleaks (8.30.0)
repository-config/root-folder/NuGet.config

[high] 11-11: Identified a password within a Nuget config file, potentially compromising package management access.

(nuget-config-password)

🔇 Additional comments (7)
editor-config/editorconfig-hierarchy/library-repository/.editorconfig (1)

377-377: Verify naming style for private static readonly fields.

Line 377 sets dotnet_naming_rule.private_static_readonly_rule.style = pascal_case, but readonly fields are typically named in lower_camel_case style (with prefix). Confirm this is intentional or align with other repository editorconfig files.

editor-config/editorconfig-hierarchy/app-repository/.editorconfig (3)

406-406: Verify naming style for private static fields.

Line 406 sets dotnet_naming_rule.private_static_fields_rule.style = pascal_case, but private static fields are typically named using lower_camel_case_style. This deviates from standard naming conventions. Verify this is intentional.


412-412: Verify naming style for private static readonly fields.

Line 412 sets dotnet_naming_rule.private_static_readonly_rule.style = pascal_case, but readonly fields are typically named using lower_camel_case_style. This deviates from standard naming conventions. Verify this is intentional.


717-717: Verify severity level change for var-typing suggestions.

Line 717 changes resharper_suggest_var_or_type_simple_types_highlighting from suggestion to warning. This elevates the severity. Confirm this is intentional or align with other similar rules in the file.

editor-config/all-rules-stylecop.editorconfig (1)

267-268: Remove duplicate rule definitions for CS8763 and CS8770.

Lines 267–268 duplicate rule definitions already present at lines 249–250. The duplicate entries are redundant; remove them.

 dotnet_diagnostic.cs9264.severity = warning # Non-nullable property...
 
-dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.
-dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
 
 ## Properties: 'dotnet_diagnostic.faa'

Likely an incorrect or invalid review comment.

dependencies/Testing.Packages.props (1)

1-56: Well-structured centralized testing package versions.

The file provides a comprehensive and well-organized set of testing dependencies. The PrivateAssets and IncludeAssets configurations for analyzers and collectors are correctly applied to prevent transitive exposure.

dependencies/MicrosoftExtensions.Net9.Packages.props (1)

3-36: Consistent version pinning across Microsoft packages is valid.

All packages are uniformly pinned to version 9.0.8, a released patch version in the .NET 9 ecosystem, ensuring compatibility. The alphabetical ordering within the ItemGroup aids maintainability.

Comment thread .gitignore
Comment thread dependencies/Serilog.Logging.Packages.props
Comment thread editor-config/editorconfig-hierarchy/app-repository/.editorconfig
Comment thread editor-config/editorconfig-hierarchy/app-repository/.editorconfig
Comment on lines +438 to +455
dotnet_naming_rule.local_constants_rule.import_to_resharper = True
dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
dotnet_naming_rule.local_constants_rule.import_to_resharper = True
dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
dotnet_naming_rule.local_constants_rule.severity = none
dotnet_naming_rule.local_constants_rule.style = pascal_case
dotnet_naming_rule.local_constants_rule.symbols = local_constants_symbols
dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
dotnet_naming_rule.private_instance_fields_rule_1.severity = none
dotnet_naming_rule.private_instance_fields_rule_1.style = lower_camel_case_style
dotnet_naming_rule.private_instance_fields_rule_1.symbols = private_instance_fields_symbols_1
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Remove duplicate and near-duplicate naming rule definitions.

Lines 438–455 introduce redundant naming rules that duplicate earlier definitions with slightly different names (local_constants_rule, private_instance_fields_rule_1, etc.). This creates maintenance burden and confusion. Consolidate or clarify the intent.

 dotnet_naming_rule.types_should_be_pascal_case.severity = warning
 dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
 dotnet_naming_rule.types_should_be_pascal_case.symbols = types
-dotnet_naming_rule.local_constants_rule.import_to_resharper = True
-dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
-dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
-dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
-dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
-dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
-dotnet_naming_rule.local_constants_rule.import_to_resharper = True
-dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
-dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
-dotnet_naming_rule.local_constants_rule.severity = none
-dotnet_naming_rule.local_constants_rule.style = pascal_case
-dotnet_naming_rule.local_constants_rule.symbols = local_constants_symbols
-dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
-dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
-dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
-dotnet_naming_rule.private_instance_fields_rule_1.severity = none
-dotnet_naming_rule.private_instance_fields_rule_1.style = lower_camel_case_style
-dotnet_naming_rule.private_instance_fields_rule_1.symbols = private_instance_fields_symbols_1
 
 # Properties: 'dotnet_naming_style'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dotnet_naming_rule.local_constants_rule.import_to_resharper = True
dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
dotnet_naming_rule.local_constants_rule.import_to_resharper = True
dotnet_naming_rule.local_constants_rule.resharper_description = Local constants
dotnet_naming_rule.local_constants_rule.resharper_guid = a4f433b8-abcd-4e55-a08f-82e78cef0f0c
dotnet_naming_rule.local_constants_rule.severity = none
dotnet_naming_rule.local_constants_rule.style = pascal_case
dotnet_naming_rule.local_constants_rule.symbols = local_constants_symbols
dotnet_naming_rule.private_instance_fields_rule_1.import_to_resharper = True
dotnet_naming_rule.private_instance_fields_rule_1.resharper_description = Instance fields (private)
dotnet_naming_rule.private_instance_fields_rule_1.resharper_guid = 4a98fdf6-7d98-4f5a-afeb-ea44ad98c70c
dotnet_naming_rule.private_instance_fields_rule_1.severity = none
dotnet_naming_rule.private_instance_fields_rule_1.style = lower_camel_case_style
dotnet_naming_rule.private_instance_fields_rule_1.symbols = private_instance_fields_symbols_1
🤖 Prompt for AI Agents
In editor-config/editorconfig-hierarchy/app-repository/.editorconfig around
lines 438–455 there are duplicate and near-duplicate dotnet_naming_rule entries
(e.g., repeated local_constants_rule and private_instance_fields_rule_1 blocks)
which should be consolidated; remove the repeated definitions and merge their
unique settings into a single canonical rule per name (preserve the intended
severity, style, symbols, and import_to_resharper/resharper_* metadata) or
rename intentionally different rules to distinct identifiers, ensuring each rule
name appears only once and the final single block contains the correct combined
properties.

Comment on lines +51 to +52
dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Remove duplicate rule definition for CS8770.

Lines 51 and 52 define the same rule identically. Keep one and remove the duplicate.

 dotnet_diagnostic.cs8625.severity = error # Cannot convert null literal to non-nullable reference type.
-dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
 dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
 dotnet_diagnostic.cs8774.severity = error # Member must have a non-null value when exiting.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
🤖 Prompt for AI Agents
In editor-config/temporary-versions/additional-options.editorconfig around lines
51 to 52, there is a duplicate rule definition for
dotnet_diagnostic.cs8770.severity; remove one of the two identical lines so the
rule is defined only once (keep either line and delete the other) to eliminate
the duplicate entry.

Comment on lines +24 to +25
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Remove duplicate rule definition for SA1013.

Line 24 and 25 define the same rule with identical configuration. Keep one and remove the duplicate.

 dotnet_diagnostic.SA1012.severity = warning # stylecop
-dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1014.severity = warning # stylecop
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1012.severity = warning # stylecop
dotnet_diagnostic.SA1013.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1014.severity = warning # stylecop
🤖 Prompt for AI Agents
In editor-config/temporary-versions/all-rules-sorted.editorconfig around lines
24 to 25, the rule dotnet_diagnostic.SA1013.severity is defined twice
identically; remove the duplicate definition so only one line defines
SA1013.severity = none remains, keeping the original line order and comments
intact.

Comment on lines +126 to +127
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Remove duplicate rule definition for SA1500.

Line 126 and 127 define the same rule with identical configuration. Keep one and remove the duplicate.

 dotnet_diagnostic.SA1499.severity = warning # stylecop
-dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1501.severity = none # TODO: Review # stylecop
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1499.severity = warning # stylecop
dotnet_diagnostic.SA1500.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1501.severity = none # TODO: Review # stylecop
🤖 Prompt for AI Agents
In editor-config/temporary-versions/all-rules-sorted.editorconfig around lines
126 to 127, there is a duplicate definition of dotnet_diagnostic.SA1500.severity
= none; remove one of the two identical lines so the rule is defined only once,
preserving the remaining line and any surrounding comments or spacing.

Comment on lines +136 to +137
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Remove duplicate rule definition for SA1508.

Line 136 and 137 define the same rule with identical configuration. Keep one and remove the duplicate.

 dotnet_diagnostic.SA1507.severity = warning # stylecop
-dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
 dotnet_diagnostic.SA1509.severity = warning # stylecop
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1507.severity = warning # stylecop
dotnet_diagnostic.SA1508.severity = none # TODO: Review # stylecop
dotnet_diagnostic.SA1509.severity = warning # stylecop
🤖 Prompt for AI Agents
In editor-config/temporary-versions/all-rules-sorted.editorconfig around lines
136 to 137 there is a duplicate definition of dotnet_diagnostic.SA1508.severity
= none; remove one of the two identical lines so the rule is declared only once,
keeping the file sorted/consistent and leaving the remaining single SA1508 entry
unchanged.

<github>
<add key="Username" value="kploch" />
<add key="ClearTextPassword" value="%MRPLOCH_GITHUB_PACKAGES_TOKEN%" />
<add key="ClearTextPassword" value="$(MRPLOCH_GITHUB_PACKAGES_TOKEN)" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# Search for the MSBuild property MRPLOCH_GITHUB_PACKAGES_TOKEN across the repository
rg "MRPLOCH_GITHUB_PACKAGES_TOKEN" -C 3 --type-list

Repository: mrploch/mrploch-development

Length of output: 460


🏁 Script executed:

# List all files to understand repository structure
git ls-files | head -30

Repository: mrploch/mrploch-development

Length of output: 1638


🏁 Script executed:

# Check for CI/CD configuration files that might define the property
fd -e yml -e yaml -e xml -e config -e json | grep -iE "(github|azure|pipeline|workflow|build|ci)" | head -20

Repository: mrploch/mrploch-development

Length of output: 53


🏁 Script executed:

# Read the NuGet.config file to see full context
cat -n "repository-config/root-folder/NuGet.config"

Repository: mrploch/mrploch-development

Length of output: 719


🏁 Script executed:

# Search for MRPLOCH_GITHUB_PACKAGES_TOKEN without the --type-list flag
rg "MRPLOCH_GITHUB_PACKAGES_TOKEN" -C 2

Repository: mrploch/mrploch-development

Length of output: 1036


🏁 Script executed:

# Read the CI workflow file to check for token/property configuration
cat -n ".github/workflows/CI.yml"

Repository: mrploch/mrploch-development

Length of output: 770


🏁 Script executed:

# Also check the PowerShell configuration file mentioned in file list
cat -n "computer-config/configure-environment-variables.ps1"

Repository: mrploch/mrploch-development

Length of output: 151


🏁 Script executed:

# Find all YAML workflow files in .github directory
find ".github" -name "*.yml" -o -name "*.yaml" | head -20

Repository: mrploch/mrploch-development

Length of output: 95


🏁 Script executed:

# Search for any GitHub secrets or environment variable setup
rg "secrets\.|env\.|GITHUB_PACKAGES" --type yaml -C 2

Repository: mrploch/mrploch-development

Length of output: 219


🏁 Script executed:

# Check if there are any other build configuration files (MSBuild, Azure Pipelines, etc.)
fd -e yml -e yaml -e props | grep -iE "(build|pipeline|msbuild)" | head -20

Repository: mrploch/mrploch-development

Length of output: 370


🏁 Script executed:

# Read the root-folder Directory.Build.props
cat -n "repository-config/root-folder/Directory.Build.props"

Repository: mrploch/mrploch-development

Length of output: 4335


🏁 Script executed:

# Read the parent Directory.Build.props
cat -n "repository-config/Directory.Build.props"

Repository: mrploch/mrploch-development

Length of output: 4374


🏁 Script executed:

# Search for MRPLOCH_GITHUB_PACKAGES_TOKEN in all .props files
rg "MRPLOCH_GITHUB_PACKAGES_TOKEN" --type-list

Repository: mrploch/mrploch-development

Length of output: 460


🏁 Script executed:

# Simple search without type specification
rg "MRPLOCH_GITHUB_PACKAGES_TOKEN"

Repository: mrploch/mrploch-development

Length of output: 351


MSBuild property syntax change is correct; update sample-solutions NuGet.config to match.

The change from %MRPLOCH_GITHUB_PACKAGES_TOKEN% to $(MRPLOCH_GITHUB_PACKAGES_TOKEN) correctly applies MSBuild property syntax, which is the standard for NuGet configuration. This is a placeholder that will be resolved at build-time from the environment or CI/CD system—no actual credential is exposed in the file.

However, repository-config/sample-solutions/libs-and-console-app/NuGet.config still uses the older environment variable syntax %MRPLOCH_GITHUB_PACKAGES_TOKEN%. Update it to match the root-folder syntax $(MRPLOCH_GITHUB_PACKAGES_TOKEN) for consistency.

The Gitleaks alert is a false positive; the file contains only a property placeholder.

🧰 Tools
🪛 Gitleaks (8.30.0)

[high] 11-11: Identified a password within a Nuget config file, potentially compromising package management access.

(nuget-config-password)

🤖 Prompt for AI Agents
In repository-config/sample-solutions/libs-and-console-app/NuGet.config (around
the line with ClearTextPassword), the value uses Windows environment variable
syntax %MRPLOCH_GITHUB_PACKAGES_TOKEN%; change it to MSBuild property syntax
$(MRPLOCH_GITHUB_PACKAGES_TOKEN) to match
repository-config/root-folder/NuGet.config and ensure build-time resolution; no
credential values should be added or removed, only replace the surrounding %...%
with $(...).

Changes to project files to include:
- centralized variable for target framework
- additional x64 build target
- projects with test dependencies
*mrploch-development* repository
- updated dependencies in `.Packages.props` files
- updated `.editorconfig` files
- added vs code workspace and settings files
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Jan 22, 2026

CodeAnt AI is running Incremental review


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@codeant-ai codeant-ai Bot added size:XXL This PR changes 1000+ lines, ignoring generated files and removed size:XXL This PR changes 1000+ lines, ignoring generated files labels Jan 22, 2026
@codeant-ai
Copy link
Copy Markdown

codeant-ai Bot commented Jan 22, 2026

CodeAnt AI Incremental review completed.

Copy link
Copy Markdown

@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: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (8)
editor-config/temporary-versions/my-rules.editorconfig (3)

574-574: Invalid severity value syntax.

true:error is not a valid severity value. Valid values are: none, silent, suggestion, warning, or error. The true: prefix appears to be mistakenly included from style rule syntax.

Proposed fix
-dotnet_diagnostic.IDE0002.severity = true:error # Simplify name
+dotnet_diagnostic.IDE0002.severity = error # Simplify name

553-554: Duplicate rule entry.

dotnet_diagnostic.cs8763.severity is defined twice on consecutive lines. Remove the duplicate.

Proposed fix
 dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.
-dotnet_diagnostic.cs8763.severity = error # A method marked [DoesNotReturn] should not return.

561-562: Duplicate rule entry.

dotnet_diagnostic.cs8770.severity is defined twice on consecutive lines. Remove the duplicate.

Proposed fix
 dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
-dotnet_diagnostic.cs8770.severity = error # Method lacks [DoesNotReturn] annotation to match implemented or overridden member.
editor-config/editorconfig-hierarchy/.editorconfig (4)

6-8: Remove the invalid max_line_lengtheditorconfig key.
max_line_lengtheditorconfig is not a valid EditorConfig property and will be ignored.

🛠️ Proposed fix
 max_line_length = 160
-max_line_lengtheditorconfig = 160
 trim_trailing_whitespace = true

121-124: Fix invalid value for csharp_style_expression_bodied_operators.
true:when_on_single_line is not a valid value; the later line already has the correct form.

🛠️ Proposed fix
-csharp_style_expression_bodied_operators = true:when_on_single_line
 csharp_style_expression_bodied_operators = when_on_single_line:silent

548-552: Remove misspelled ReSharper keys that will be ignored.
resharper_align_multline_type_parameter_constrains and resharper_align_multline_type_parameter_list look like typos of the valid multiline keys above.

🛠️ Proposed fix
-resharper_align_multline_type_parameter_constrains = true
-resharper_align_multline_type_parameter_list = true

274-276: Correct IDE0002 severity format.
dotnet_diagnostic severities should be error|warning|suggestion|none; true:error is invalid and likely ignored.

🛠️ Proposed fix
 dotnet_diagnostic.IDE0001.severity = suggestion # Simplify name
-dotnet_diagnostic.IDE0002.severity = true:error # Simplify name
+dotnet_diagnostic.IDE0002.severity = error # Simplify name
 dotnet_diagnostic.IDE0018.severity = warning # Inline variable declaration
mrploch-development.code-workspace (1)

6-8: Avoid hard‑coded user path in shared workspace (Line 7).
Other contributors will see a missing folder and it exposes a local path. Prefer removing the entry or using an env‑based path.

🛠️ Suggested fix (remove user-specific folder)
 	"folders": [
 		{
 			"path": "."
 		},
-		{
-			"path": "../../../../Users/krzys/Documents/PowerShell"
-		}
 	],
🤖 Fix all issues with AI agents
In @.junie/guidelines.md:
- Around line 16-27: The nested markdown bullets under the "xUnit v3",
"FluentAssertions", "AutoFixture + AutoMoq + custom attribute", and
"JetBrains.Annotations" headings are over‑indented and must use 2-space
indentation to satisfy MD007; edit the block so each sub-bullet (e.g., lines
containing `- Attributes:`, `- Many test projects add`, `- For expressive
assertions:`, `- Use Ploch.TestingSupport.XUnit3.AutoMoq.AutoMockDataAttribute`,
and the referenced project list items) is indented exactly two spaces relative
to its parent bullet, and apply the same 2-space rule to the other occurrence
noted (the "Also applies to: 76-78" section).

In `@dependencies/MicrosoftExtensions.Net9.Packages.props`:
- Around line 2-42: The TargetFrameworkVersion property and the PackageVersion
entries were bumped to net10.0 / 10.0.1 but your repo is pinned to SDK 7.0.0 and
projects target net8.0; update global.json to a .NET 10 SDK and change all
project TargetFramework/TargetFrameworks values to net10.0 (or revert this props
change) before merging so builds succeed; ensure the <TargetFrameworkVersion>
entry and the PackageVersion entries (e.g., Microsoft.EntityFrameworkCore,
Microsoft.Extensions.*) are consistent with the SDK you set.

In `@editor-config/temporary-versions/my-rules.editorconfig`:
- Around line 1-3: The editorconfig rules at dotnet_diagnostic.C26100.severity
and dotnet_diagnostic.C26101.severity are missing a section header so they won't
apply; add an appropriate section header (for example [*.cs] or [*]) above these
rule lines so the analyzer knows which files they target, ensuring the
diagnostics are applied to the intended file types.

In `@editor-config/temporary-versions/temp-mine.editorconfig`:
- Around line 1-4: The EditorConfig lacks a section header so the diagnostic
settings for dotnet_diagnostic.C26100 and dotnet_diagnostic.C26101 are ignored;
insert an appropriate section header (e.g., [*] or a more specific selector like
[*.cs]) immediately before the lines containing
dotnet_diagnostic.C26100.severity and dotnet_diagnostic.C26101.severity so those
settings are applied.
♻️ Duplicate comments (1)
dependencies/Testing.Packages.props (1)

3-48: Avoid mixing xUnit v2 and v3 package families in the same dependency set.

Having both xunit (v2) and xunit.v3 packages in one shared versions file can trigger assembly/version conflicts across test projects. If a migration is in progress, consider splitting versions by project set or adding clear guidance on which to use.

#!/bin/bash
# Identify which projects reference xUnit v2 vs v3
rg -n --type=xml '<PackageReference Include="xunit(\.v3)?' -g '*.csproj'
rg -n --type=xml '<Using Include="Xunit"' -g '*.csproj'
🧹 Nitpick comments (4)
editor-config/temporary-versions/my-rules.editorconfig (3)

487-487: Incomplete placeholder comment.

The comment #... appears to be a placeholder. Consider replacing it with a meaningful section header (e.g., # .NET Analyzers) or removing it.


488-603: Inconsistent casing between rule sections.

The native rules section uses uppercase IDs (e.g., C26100), while the .NET analyzer section uses lowercase (e.g., ca1001, cs8597). While editorconfig keys are case-insensitive, consistent casing improves readability. Consider aligning all diagnostic IDs to the same case convention.


1-485: C/C++ native analyzer rules cannot be configured via dotnet_diagnostic.* syntax.

The rules in this section (C26xxx, C28xxx, C33xxx, C6xxx) are MSVC Code Analysis rules for native C/C++. The dotnet_diagnostic.* syntax is reserved for Roslyn/.NET analyzers and will have no effect on C++ static analysis.

To configure MSVC C++ Code Analysis rules, use one of these methods:

  • Ruleset files (.ruleset XML with <Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis"> entries) — the recommended approach
  • MSBuild properties (set CodeAnalysisRuleSet in .vcxproj)
  • Command-line (/analyze:ruleset flag for cl.exe)
  • For clang-tidy checks, use a .clang-tidy file instead

Remove these entries or move them to the appropriate configuration file for your C++ analyzer.

editor-config/temporary-versions/temp-mine.editorconfig (1)

494-633: De‑duplicate repeated diagnostic IDs to avoid drift.
Several rule IDs appear multiple times with identical severities (e.g., CA1016, CA1036, CA1041, CA1304, CA1305, CA1309, CA1401, CA1710, CA1711, CA1712, CA1715, CA1720, CA1725, CA1816, CA1821, CA1822, CA2101). Consider keeping a single entry per ID to reduce maintenance overhead.

Comment thread .junie/guidelines.md
Comment on lines +16 to +27
- xUnit v3
- Attributes: `Fact`, `Theory`, `InlineData`, `MemberData`, `ClassData`.
- Many test projects add `<Using Include="Xunit" />` in the test `.csproj` to make xUnit attributes available without explicit `using` statements.
- FluentAssertions
- For expressive assertions: `result.Should().Be(...)`, `act.Should().Throw<...>()`, etc.
- AutoFixture + AutoMoq + custom attribute
- Use `Ploch.TestingSupport.XUnit3.AutoMoq.AutoMockDataAttribute` to auto‑create SUTs and mocks.
- This is referenced via test projects’ project references:
- `Ploch.TestingSupport.XUnit3.AutoMoq`
- (Often) `Ploch.TestingSupport.XUnit3`
- JetBrains.Annotations (optional, but used in tests)
- Attribute `TestSubject` may be applied to test classes to mark the subject under test.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix list indentation to satisfy MD007 (markdownlint).

Nested list items are indented more than expected. Adjusting to 2-space indentation for nested bullets resolves the lint errors.

📝 Suggested indentation fix
 - xUnit v3
-    - Attributes: `Fact`, `Theory`, `InlineData`, `MemberData`, `ClassData`.
-    - Many test projects add `<Using Include="Xunit" />` in the test `.csproj` to make xUnit attributes available without explicit `using` statements.
+  - Attributes: `Fact`, `Theory`, `InlineData`, `MemberData`, `ClassData`.
+  - Many test projects add `<Using Include="Xunit" />` in the test `.csproj` to make xUnit attributes available without explicit `using` statements.
 - FluentAssertions
-    - For expressive assertions: `result.Should().Be(...)`, `act.Should().Throw<...>()`, etc.
+  - For expressive assertions: `result.Should().Be(...)`, `act.Should().Throw<...>()`, etc.
 - AutoFixture + AutoMoq + custom attribute
-    - Use `Ploch.TestingSupport.XUnit3.AutoMoq.AutoMockDataAttribute` to auto‑create SUTs and mocks.
-    - This is referenced via test projects’ project references:
-        - `Ploch.TestingSupport.XUnit3.AutoMoq`
-        - (Often) `Ploch.TestingSupport.XUnit3`
+  - Use `Ploch.TestingSupport.XUnit3.AutoMoq.AutoMockDataAttribute` to auto‑create SUTs and mocks.
+  - This is referenced via test projects’ project references:
+    - `Ploch.TestingSupport.XUnit3.AutoMoq`
+    - (Often) `Ploch.TestingSupport.XUnit3`
 - JetBrains.Annotations (optional, but used in tests)
-    - Attribute `TestSubject` may be applied to test classes to mark the subject under test.
+  - Attribute `TestSubject` may be applied to test classes to mark the subject under test.
@@
 - Project name: mirror product project with `.Tests` suffix.
-    - Example: `Ploch.Tools.SystemProfiles.Storage.File` → `Ploch.Tools.SystemProfiles.Storage.File.Tests`.
+  - Example: `Ploch.Tools.SystemProfiles.Storage.File` → `Ploch.Tools.SystemProfiles.Storage.File.Tests`.

Also applies to: 76-78

🧰 Tools
🪛 LanguageTool

[style] ~20-~20: In American English, abbreviations like “etc.” require a period.
Context: ....Be(...), act.Should().Throw<...>()`, etc. - AutoFixture + AutoMoq + custom attri...

(ETC_PERIOD)

🪛 markdownlint-cli2 (0.18.1)

17-17: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


18-18: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


20-20: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


22-22: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


23-23: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


24-24: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)


25-25: Unordered list indentation
Expected: 4; Actual: 8

(MD007, ul-indent)


27-27: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

🤖 Prompt for AI Agents
In @.junie/guidelines.md around lines 16 - 27, The nested markdown bullets under
the "xUnit v3", "FluentAssertions", "AutoFixture + AutoMoq + custom attribute",
and "JetBrains.Annotations" headings are over‑indented and must use 2-space
indentation to satisfy MD007; edit the block so each sub-bullet (e.g., lines
containing `- Attributes:`, `- Many test projects add`, `- For expressive
assertions:`, `- Use Ploch.TestingSupport.XUnit3.AutoMoq.AutoMockDataAttribute`,
and the referenced project list items) is indented exactly two spaces relative
to its parent bullet, and apply the same 2-space rule to the other occurrence
noted (the "Also applies to: 76-78" section).

Comment on lines +2 to +42
<PropertyGroup>
<TargetFrameworkVersion>net10.0</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="9.0.7" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.7" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.WebEncoders" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="9.0.8" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="9.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="9.0.8" />
<PackageVersion Include="System.Management" Version="9.0.8" />
<PackageVersion Include="System.Text.Json" Version="9.0.8" />
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="9.0.8" />
<PackageVersion Include="Microsoft.AspNetCore.Authorization" Version="10.0.1" />
<PackageVersion Include="Microsoft.AspNetCore.OpenApi" Version="10.0.1" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.1" />
<PackageVersion Include="Microsoft.Bcl.Cryptography" Version="10.0.1" />
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.1" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Analyzers" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.FileSystemGlobbing" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Localization" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Localization.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.Primitives" Version="10.0.1" />
<PackageVersion Include="Microsoft.Extensions.WebEncoders" Version="10.0.1" />
<PackageVersion Include="System.Management" Version="10.0.1" />
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="10.0.1" />
<PackageVersion Include="System.Text.Json" Version="10.0.1" />
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Inspect SDK pinning and target frameworks across the repo
fd -a 'global.json' -x cat {}
echo "---"
rg -n '<TargetFramework(s|Version)?>' -g '*.csproj' -g '*.props' -g '*.targets'

Repository: mrploch/mrploch-development

Length of output: 704


Update global.json SDK version and project target frameworks before applying this change.

The change to net10.0 and 10.0.1 packages is incompatible with the current setup:

  • global.json pins SDK to 7.0.0, which cannot build net10.0 projects
  • All actual projects target net8.0, not net10.0, creating inconsistency with this .props file
  • Builds will fail immediately

Update global.json to a .NET 10 SDK version and align all project TargetFramework entries to net10.0 before applying this change.

🤖 Prompt for AI Agents
In `@dependencies/MicrosoftExtensions.Net9.Packages.props` around lines 2 - 42,
The TargetFrameworkVersion property and the PackageVersion entries were bumped
to net10.0 / 10.0.1 but your repo is pinned to SDK 7.0.0 and projects target
net8.0; update global.json to a .NET 10 SDK and change all project
TargetFramework/TargetFrameworks values to net10.0 (or revert this props change)
before merging so builds succeed; ensure the <TargetFrameworkVersion> entry and
the PackageVersion entries (e.g., Microsoft.EntityFrameworkCore,
Microsoft.Extensions.*) are consistent with the SDK you set.

Comment on lines +1 to +3
# Microsoft.Rules.Native
dotnet_diagnostic.C26100.severity = warning
dotnet_diagnostic.C26101.severity = warning
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Missing section header for editorconfig rules.

The file begins with diagnostic rules but lacks a section header (e.g., [*.cs] or [*]) to specify which files these rules apply to. Without a section header, these rules may not be applied by the editor/analyzer.

Proposed fix
+[*.cs]
+
 # Microsoft.Rules.Native
 dotnet_diagnostic.C26100.severity = warning
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Microsoft.Rules.Native
dotnet_diagnostic.C26100.severity = warning
dotnet_diagnostic.C26101.severity = warning
[*.cs]
# Microsoft.Rules.Native
dotnet_diagnostic.C26100.severity = warning
dotnet_diagnostic.C26101.severity = warning
🤖 Prompt for AI Agents
In `@editor-config/temporary-versions/my-rules.editorconfig` around lines 1 - 3,
The editorconfig rules at dotnet_diagnostic.C26100.severity and
dotnet_diagnostic.C26101.severity are missing a section header so they won't
apply; add an appropriate section header (for example [*.cs] or [*]) above these
rule lines so the analyzer knows which files they target, ensuring the
diagnostics are applied to the intended file types.

Comment on lines +1 to +4
# microsoft.rules.native

dotnet_diagnostic.C26100.severity = warning # stylecop
dotnet_diagnostic.C26101.severity = warning # stylecop
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

find . -path "*editor-config/temporary-versions/temp-mine.editorconfig" -type f

Repository: mrploch/mrploch-development

Length of output: 128


🏁 Script executed:

cat -n ./editor-config/temporary-versions/temp-mine.editorconfig

Repository: mrploch/mrploch-development

Length of output: 42168


🌐 Web query:

EditorConfig section header requirements properties before first section

💡 Result:

Short answer:

  • Lines before the first section are the "preamble" and may contain key=value pairs, comments, and blank lines. The special property root is expected there (top-level). [1][2]

  • Section headers must start with "[" and end with "]"; may contain any characters (including spaces/tabs) between the brackets; no non-whitespace characters are allowed outside the brackets; forward slashes (/) are used as path separators (backslashes are not allowed). [1][3]

References:
[1] EditorConfig Specification — File format & parts (preamble, sections).
[2] EditorConfig official site — file format and root property.
[3] EditorConfig format docs — section header rules.


Add a section header so these diagnostics apply.

EditorConfig properties require a section header to be applied. Without [*] (or more specific selector) before the diagnostic settings, none of these configurations will take effect.

🛠️ Proposed fix
 # microsoft.rules.native
+[*]
 
 dotnet_diagnostic.C26100.severity = warning # stylecop
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# microsoft.rules.native
dotnet_diagnostic.C26100.severity = warning # stylecop
dotnet_diagnostic.C26101.severity = warning # stylecop
# microsoft.rules.native
[*]
dotnet_diagnostic.C26100.severity = warning # stylecop
dotnet_diagnostic.C26101.severity = warning # stylecop
🤖 Prompt for AI Agents
In `@editor-config/temporary-versions/temp-mine.editorconfig` around lines 1 - 4,
The EditorConfig lacks a section header so the diagnostic settings for
dotnet_diagnostic.C26100 and dotnet_diagnostic.C26101 are ignored; insert an
appropriate section header (e.g., [*] or a more specific selector like [*.cs])
immediately before the lines containing dotnet_diagnostic.C26100.severity and
dotnet_diagnostic.C26101.severity so those settings are applied.

@bito-code-review
Copy link
Copy Markdown

bito-code-review Bot commented Jan 22, 2026

Code Review Agent Run #791a4c

Actionable Suggestions - 0
Additional Suggestions - 21
  • editor-config/temporary-versions/temp-mine.editorconfig - 20
    • Duplicate config entry · Line 593-594
      The diagnostic rule CA1710 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 595-596
      The diagnostic rule CA1711 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 597-598
      The diagnostic rule CA1712 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 600-601
      The diagnostic rule CA1715 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 602-603
      The diagnostic rule CA1716 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 607-608
      The diagnostic rule CA1720 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 612-613
      The diagnostic rule CA1725 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 627-628
      The diagnostic rule CA1816 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 630-631
      The diagnostic rule CA1821 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate config entry · Line 632-633
      The diagnostic rule CA1822 has two identical severity entries. Remove one to eliminate redundancy.
    • Unresolved TODO in config · Line 634-634
      The severity for CA1824 is set to none with a TODO comment indicating uncertainty. Review the rule's purpose and set to warning or another level if applicable.
    • Duplicate config entry · Line 658-659
      The diagnostic rule CA2101 has two identical severity entries. Remove one to eliminate redundancy.
    • Duplicate comment text · Line 402-408
      The comments in these lines have duplicate '# stylecop', making them incorrect; remove the extra one to correct the comment.
      Code suggestion
       @@ -402,7 +402,7 @@
      -dotnet_diagnostic.C6296.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6297.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6298.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6299.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6302.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6303.severity = warning # stylecop # stylecop
      -dotnet_diagnostic.C6305.severity = warning # stylecop # stylecop
      +dotnet_diagnostic.C6296.severity = warning # stylecop
      +dotnet_diagnostic.C6297.severity = warning # stylecop
      +dotnet_diagnostic.C6298.severity = warning # stylecop
      +dotnet_diagnostic.C6299.severity = warning # stylecop
      +dotnet_diagnostic.C6302.severity = warning # stylecop
      +dotnet_diagnostic.C6303.severity = warning # stylecop
      +dotnet_diagnostic.C6305.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 500-500
      The diagnostic for CA1016 is set twice on consecutive lines, which is redundant since the last setting wins; remove the duplicate.
      Code suggestion
       @@ -499,2 +499,1 @@
      - dotnet_diagnostic.CA1016.severity = warning # stylecop
      - dotnet_diagnostic.CA1016.severity = warning # stylecop
      + dotnet_diagnostic.CA1016.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 510-510
      The diagnostic for CA1036 is set twice on consecutive lines, which is redundant; remove the duplicate.
      Code suggestion
       @@ -509,2 +509,1 @@
      - dotnet_diagnostic.CA1036.severity = warning # stylecop
      - dotnet_diagnostic.CA1036.severity = warning # stylecop
      + dotnet_diagnostic.CA1036.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 514-514
      The diagnostic for CA1041 is set twice on consecutive lines, redundant; remove the duplicate.
      Code suggestion
       @@ -513,2 +513,1 @@
      - dotnet_diagnostic.CA1041.severity = warning # stylecop
      - dotnet_diagnostic.CA1041.severity = warning # stylecop
      + dotnet_diagnostic.CA1041.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 544-544
      Duplicate setting for CA1304, remove one.
      Code suggestion
       @@ -543,2 +543,1 @@
      - dotnet_diagnostic.CA1304.severity = warning # stylecop
      - dotnet_diagnostic.CA1304.severity = warning # stylecop
      + dotnet_diagnostic.CA1304.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 546-546
      Duplicate CA1305 setting, remove duplicate.
      Code suggestion
       @@ -545,2 +545,1 @@
      - dotnet_diagnostic.CA1305.severity = warning # stylecop
      - dotnet_diagnostic.CA1305.severity = warning # stylecop
      + dotnet_diagnostic.CA1305.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 551-551
      Duplicate CA1309, remove one.
      Code suggestion
       @@ -550,2 +550,1 @@
      - dotnet_diagnostic.CA1309.severity = warning # stylecop
      - dotnet_diagnostic.CA1309.severity = warning # stylecop
      + dotnet_diagnostic.CA1309.severity = warning # stylecop
    • Duplicate diagnostic setting · Line 554-554
      Duplicate CA1401 setting, remove duplicate.
      Code suggestion
       @@ -553,2 +553,1 @@
      - dotnet_diagnostic.CA1401.severity = warning # stylecop
      - dotnet_diagnostic.CA1401.severity = warning # stylecop
      + dotnet_diagnostic.CA1401.severity = warning # stylecop
  • editor-config/temporary-versions/my-rules.editorconfig - 1
    • Inapplicable C/C++ Rules · Line 309-485
      These added diagnostic rules appear to be for C/C++ code analysis, but the repository contains no C/C++ files, so they won't affect .NET builds and represent dead configuration.
Review Details
  • Files reviewed - 18 · Commit Range: 5bb6366..f68d9ae
    • dependencies/Analyzers.Global.Packages.props
    • dependencies/Common.Packages.props
    • dependencies/MicrosoftExtensions.Net9.Packages.props
    • dependencies/Ploch.Packages.props
    • dependencies/Serilog.Logging.Packages.props
    • dependencies/Spectre.Console.Packages.props
    • dependencies/Testing.Packages.props
    • editor-config/all-rules-stylecop.editorconfig
    • editor-config/editorconfig-hierarchy/.editorconfig
    • editor-config/editorconfig-hierarchy/app-repository/.editorconfig
    • editor-config/editorconfig-hierarchy/library-repository/.editorconfig
    • editor-config/temporary-versions/additional-options.editorconfig
    • editor-config/temporary-versions/all-rules-sorted.editorconfig
    • editor-config/temporary-versions/my-rules.editorconfig
    • editor-config/temporary-versions/temp-mine.editorconfig
    • mrploch-development.code-workspace
    • repository-config/root-folder/NuGet.config
    • scripts/prepare-repo.ps1
  • Files skipped - 3
    • .gitignore - Reason: Filter setting
    • .junie/guidelines.md - Reason: Filter setting
    • .vscode/settings.json - Reason: Filter setting
  • Tools
    • Whispers (Secret Scanner) - ✔︎ Successful
    • Detect-secrets (Secret Scanner) - ✔︎ Successful

Bito Usage Guide

Commands

Type the following command in the pull request comment and save the comment.

  • /review - Manually triggers a full AI review.

  • /pause - Pauses automatic reviews on this pull request.

  • /resume - Resumes automatic reviews.

  • /resolve - Marks all Bito-posted review comments as resolved.

  • /abort - Cancels all in-progress reviews.

Refer to the documentation for additional commands.

Configuration

This repository uses Default Agent You can customize the agent settings here or contact your Bito workspace admin at kris@ploch.dev.

Documentation & Help

AI Code Review powered by Bito Logo

@bito-code-review
Copy link
Copy Markdown

Changelist by Bito

This pull request implements the following key changes.

Key Change Files Impacted Summary
Feature Improvement - Analyzer Package Updates
Updated versions of code analysis packages and added commented IDisposableAnalyzers for enhanced code quality checks.
New Feature - Centralized Common Package Versions
Introduced a new centralized file defining versions for common libraries to ensure consistency across projects.
Feature Improvement - Microsoft Extensions Package Updates
Updated Microsoft package versions from 10.0.0 to 10.0.1 and added new packages for latest features.
Feature Improvement - Other Package Set Updates
Updated package versions in Ploch, Serilog, Spectre.Console, and Testing package sets for uniformity.
Feature Improvement - Editor Configuration Standardization
Normalized and expanded .editorconfig files to enforce consistent formatting, naming, and analyzer severities across repositories.
Other Improvements - Workspace Configuration Update
Updated VS Code workspace settings to align with standardized configurations.

@kploch
Copy link
Copy Markdown
Contributor Author

kploch commented Mar 29, 2026

Closing: superseded by PR #7 which contains all these changes (and more) with newer package versions.

@kploch kploch closed this Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant