From 3fac97d12e4540a811fa93dadc1541e69f4af73c Mon Sep 17 00:00:00 2001 From: Piotr Zajac Date: Fri, 10 Apr 2026 14:37:46 +0200 Subject: [PATCH 1/2] chore(ai): CodeRabbit config --- .../task-4 - Add-AI-powered-PR-review.md | 7 ++- .coderabbit.yaml | 63 +++++++++++++++++++ .github/pull_request_template.md | 3 + 3 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 .coderabbit.yaml diff --git a/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md b/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md index 6bad4203..2d7a36f6 100644 --- a/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md +++ b/.backlog/tasks/task-4 - Add-AI-powered-PR-review.md @@ -1,9 +1,12 @@ --- id: TASK-4 title: Add AI-powered PR review -status: To Do -assignee: [] +status: In Progress +assignee: + - claude + - piotrzajac created_date: '2026-04-07 20:56' +updated_date: '2026-04-10 14:24' labels: - ci-cd - dx diff --git a/.coderabbit.yaml b/.coderabbit.yaml new file mode 100644 index 00000000..e18967e1 --- /dev/null +++ b/.coderabbit.yaml @@ -0,0 +1,63 @@ +# CodeRabbit configuration for AutoFixture.XUnit2.AutoMock +# https://docs.coderabbit.ai/getting-started/configure-coderabbit +# +# One-time prerequisite: install the CodeRabbit GitHub App at the org/repo level. +# https://github.com/apps/coderabbit-ai + +language: "en-US" + +reviews: + profile: "chill" + request_changes_workflow: false + high_level_summary: true + poem: false + review_status: true + auto_apply_labels: true + auto_review: + enabled: true + drafts: false + path_instructions: + - path: "**/*.cs" + instructions: | + Review against the conventions in AGENTS.md: + + Style (enforced by analyzers — build fails on violations): + - `using` directives must go inside the namespace block (StyleCop SA1210). + - Use `global::` prefix on external packages (AutoFixture, Moq, FakeItEasy, NSubstitute, xunit, etc.). + - No XML documentation comments — code should be self-explanatory. + - Prefer sealed classes unless explicitly designed for inheritance. + - Use the NotNull() guard extension (Core/Common/) instead of throwing ArgumentNullException directly. + - [SuppressMessage] requires an explicit justification comment. + - No `// TODO:` comments — open a GitHub issue instead. + + Architecture: + - New xUnit2 attributes must derive from the correct Core base class: + AutoDataBaseAttribute, InlineAutoDataBaseAttribute, or MemberAutoDataBaseAttribute. + - Do not add public API to Core that is specific to one mocking library. + + - path: "**/*Tests*/**/*.cs" + instructions: | + In addition to the general C# rules, apply these test-specific conventions: + + Naming (BDD-style — mandatory): + - Every [Fact] and [Theory] must set DisplayName. + - DisplayName must use UPPER CASE GIVEN/WHEN/THEN form, e.g.: + "WHEN constructor is invoked THEN fixture is created" + "GIVEN parameters include IFixture WHEN data is generated THEN fixture is injected" + - The method name must mirror DisplayName in PascalCase_WithUnderscores. + - Never use "Test" as a suffix or prefix in method names. + + Structure (AAA — mandatory): + - All tests must contain explicit // Arrange, // Act, // Assert comment blocks. + - All three blocks are required even when empty. + + Mocking: + - Only use Mock and Mock to verify attribute wiring. + - Do not instantiate `new Fixture()` — inject IFixture via the test method parameter or use [AutoMockData]. + + Organization: + - Test classes must carry [Collection("ClassName")] for isolation. + - Test classes must carry [Trait("Category", "CategoryName")] for categorization. + +chat: + auto_reply: true diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 68834920..b412d5cb 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,5 +1,8 @@ # Summary + +@coderabbitai summary + Closes # - Please add a description of the issue this PR is addressing. Link the relevant issue if applicable. From 42c51e8a1e3e673467e01ac7add39c1796ce2685 Mon Sep 17 00:00:00 2001 From: Piotr Zajac Date: Fri, 10 Apr 2026 14:45:19 +0200 Subject: [PATCH 2/2] chore(ai): No need for path_instructions --- .coderabbit.yaml | 42 ------------------------------------------ 1 file changed, 42 deletions(-) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index e18967e1..bd6c9d5e 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -16,48 +16,6 @@ reviews: auto_review: enabled: true drafts: false - path_instructions: - - path: "**/*.cs" - instructions: | - Review against the conventions in AGENTS.md: - - Style (enforced by analyzers — build fails on violations): - - `using` directives must go inside the namespace block (StyleCop SA1210). - - Use `global::` prefix on external packages (AutoFixture, Moq, FakeItEasy, NSubstitute, xunit, etc.). - - No XML documentation comments — code should be self-explanatory. - - Prefer sealed classes unless explicitly designed for inheritance. - - Use the NotNull() guard extension (Core/Common/) instead of throwing ArgumentNullException directly. - - [SuppressMessage] requires an explicit justification comment. - - No `// TODO:` comments — open a GitHub issue instead. - - Architecture: - - New xUnit2 attributes must derive from the correct Core base class: - AutoDataBaseAttribute, InlineAutoDataBaseAttribute, or MemberAutoDataBaseAttribute. - - Do not add public API to Core that is specific to one mocking library. - - - path: "**/*Tests*/**/*.cs" - instructions: | - In addition to the general C# rules, apply these test-specific conventions: - - Naming (BDD-style — mandatory): - - Every [Fact] and [Theory] must set DisplayName. - - DisplayName must use UPPER CASE GIVEN/WHEN/THEN form, e.g.: - "WHEN constructor is invoked THEN fixture is created" - "GIVEN parameters include IFixture WHEN data is generated THEN fixture is injected" - - The method name must mirror DisplayName in PascalCase_WithUnderscores. - - Never use "Test" as a suffix or prefix in method names. - - Structure (AAA — mandatory): - - All tests must contain explicit // Arrange, // Act, // Assert comment blocks. - - All three blocks are required even when empty. - - Mocking: - - Only use Mock and Mock to verify attribute wiring. - - Do not instantiate `new Fixture()` — inject IFixture via the test method parameter or use [AutoMockData]. - - Organization: - - Test classes must carry [Collection("ClassName")] for isolation. - - Test classes must carry [Trait("Category", "CategoryName")] for categorization. chat: auto_reply: true