first commit
This commit is contained in:
@@ -0,0 +1,406 @@
|
||||
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
|
||||
# https://docs.coderabbit.ai/getting-started/configure-coderabbit
|
||||
|
||||
# CodeRabbit Configuration
|
||||
# Optimized for .NET 10 / ASP.NET Core Web API project
|
||||
|
||||
language: en-US
|
||||
early_access: true
|
||||
|
||||
reviews:
|
||||
profile: chill
|
||||
request_changes_workflow: false
|
||||
high_level_summary: true
|
||||
high_level_summary_placeholder: "@coderabbitai summary"
|
||||
review_status: true
|
||||
commit_status: true
|
||||
fail_commit_status: false
|
||||
collapse_walkthrough: false
|
||||
changed_files_summary: true
|
||||
sequence_diagrams: true
|
||||
estimate_code_review_effort: true
|
||||
assess_linked_issues: true
|
||||
related_issues: true
|
||||
related_prs: true
|
||||
suggested_labels: true
|
||||
auto_apply_labels: false
|
||||
suggested_reviewers: false
|
||||
poem: false
|
||||
abort_on_close: true
|
||||
|
||||
path_instructions:
|
||||
- path: "**/*.cs"
|
||||
instructions: |
|
||||
- Follow C# naming conventions: PascalCase for classes/methods/properties, camelCase for local variables
|
||||
- Ensure nullable reference types are handled properly
|
||||
- Verify async/await patterns are used consistently
|
||||
- Check for proper dependency injection usage
|
||||
- Validate that var is used appropriately for obvious types
|
||||
- Ensure ILogger<T> is used for logging, not Console.WriteLine
|
||||
- Code should follow CSharpier formatting standards
|
||||
|
||||
- path: "src/**/Controllers/**/*.cs"
|
||||
instructions: |
|
||||
- Controllers should be thin - delegate to services
|
||||
- Verify proper HTTP status codes (200, 201, 404, 409, 500); payload
|
||||
validation failures (FluentValidation) must return 422 Unprocessable
|
||||
Entity via TypedResults.Problem(new HttpValidationProblemDetails(...))
|
||||
— not 400 Bad Request. See ADR-0006 in docs/adr/.
|
||||
- Check that [ApiController] and route attributes are present
|
||||
- Ensure validation happens before processing
|
||||
- Confirm async controller actions return appropriate Result types
|
||||
|
||||
- path: "src/**/Services/**/*.cs"
|
||||
instructions: |
|
||||
- Services should contain business logic and orchestration
|
||||
- Verify proper use of IMemoryCache for read operations
|
||||
- Check that AutoMapper is used for object transformations
|
||||
- Ensure structured logging with ILogger<T>
|
||||
- Validate cache invalidation on data modifications
|
||||
|
||||
- path: "src/**/Repositories/**/*.cs"
|
||||
instructions: |
|
||||
- Repositories should abstract data access
|
||||
- Verify AsNoTracking() is used for read-only queries
|
||||
- Check that all database operations are async
|
||||
- Ensure proper null handling for not-found scenarios
|
||||
- Validate LINQ queries for performance
|
||||
|
||||
- path: "src/**/Models/**/*.cs"
|
||||
instructions: |
|
||||
- Models should be clean POCOs
|
||||
- Check for proper use of nullable reference types
|
||||
- Verify navigation properties are virtual (if using lazy loading)
|
||||
- Ensure DTOs are separate from domain entities
|
||||
|
||||
- path: "src/**/Validators/**/*.cs"
|
||||
instructions: |
|
||||
- Validators should use FluentValidation
|
||||
- Check validation rules are for data structure, not business logic
|
||||
- Ensure error messages are descriptive
|
||||
- Verify validators are registered in DI container
|
||||
|
||||
- path: "src/**/Mappings/**/*.cs"
|
||||
instructions: |
|
||||
- Profiles should inherit from AutoMapper Profile
|
||||
- Verify CreateMap<Source, Destination>() calls cover all DTOs in use
|
||||
- Check reverse mappings are defined where bidirectional mapping is needed
|
||||
- Ensure profiles are registered via AddAutoMapper() in the DI setup
|
||||
- Flag any manual property mappings that could be replaced by convention
|
||||
|
||||
- path: "src/**/Middlewares/**/*.cs"
|
||||
instructions: |
|
||||
- Middleware must implement InvokeAsync(HttpContext context) signature
|
||||
- Verify _next(context) is called unless the middleware intentionally short-circuits
|
||||
- Ensure exceptions are not swallowed — rethrow or translate to Problem Details
|
||||
- Middleware should be stateless; dependencies requiring request scope belong in services
|
||||
|
||||
- path: "src/**/Extensions/**/*.cs"
|
||||
instructions: |
|
||||
- Extension methods should target IServiceCollection and return IServiceCollection
|
||||
- Each method should encapsulate a single registration concern
|
||||
- Verify service lifetimes (Singleton/Scoped/Transient) match the dependency's usage
|
||||
- Follow the Add{Feature} naming convention (e.g. AddPlayerServices, AddRateLimiting)
|
||||
|
||||
- path: "test/**/*.cs"
|
||||
instructions: |
|
||||
- Tests should use xUnit, Moq, and FluentAssertions
|
||||
- Verify test naming follows the two-pattern convention (exactly 3 underscore-delimited segments):
|
||||
- Controller tests: {HttpMethod}_{Resource}_{Condition}_Returns{Outcome} (e.g. Get_Players_Existing_ReturnsPlayers)
|
||||
- Service/Validator tests: {MethodName}_{StateUnderTest}_{ExpectedBehavior} (e.g. RetrieveAsync_CacheMiss_QueriesRepositoryAndCachesResult)
|
||||
- Check that mocks are properly configured
|
||||
- Ensure async tests use Task return type
|
||||
- Validate test data uses PlayerFakes factory methods from test/Utilities/
|
||||
- Tests should use [Fact] and [Theory] attributes with [Trait("Category", "Unit")]
|
||||
|
||||
- path: "**/Dockerfile"
|
||||
instructions: |
|
||||
- Verify multi-stage builds are used
|
||||
- Check that .NET 10 SDK and runtime versions match
|
||||
- Ensure non-root user is used for security
|
||||
- Validate HEALTHCHECK instruction is present
|
||||
|
||||
- path: "**/appsettings*.json"
|
||||
instructions: |
|
||||
- Verify no sensitive data is committed
|
||||
- Check configuration structure matches usage in code
|
||||
- Ensure Development and Production configs are appropriate
|
||||
|
||||
- path: "**/*.csproj"
|
||||
instructions: |
|
||||
- Verify .NET 10 (net10.0) target framework
|
||||
- Check that nullable reference types are enabled
|
||||
- Ensure package versions are up to date
|
||||
- Validate that ImplicitUsings is enabled
|
||||
- DATABASE_PROVIDER selects the active DB engine at runtime: unset =
|
||||
SQLite (default), DATABASE_PROVIDER=postgres = PostgreSQL. Do not
|
||||
hardcode a provider. Both SQLite and PostgreSQL migration paths must
|
||||
remain valid. See ADR-0014 in docs/adr/.
|
||||
|
||||
- path: ".github/workflows/**"
|
||||
instructions: |
|
||||
- Any CI job that runs migrations or integration tests must set
|
||||
DATABASE_PROVIDER explicitly. Unset defaults to SQLite. See ADR-0014
|
||||
in docs/adr/.
|
||||
|
||||
path_filters:
|
||||
- "!**/bin/**"
|
||||
- "!**/obj/**"
|
||||
- "!**/logs/**"
|
||||
- "!**/storage/**"
|
||||
- "!**/*.db"
|
||||
- "!**/*.db-shm"
|
||||
- "!**/*.db-wal"
|
||||
- "!**/packages.lock.json"
|
||||
- "!**/Migrations/**"
|
||||
- "!**/*.Designer.cs"
|
||||
- "!**/ModelSnapshot.cs"
|
||||
|
||||
auto_review:
|
||||
enabled: true
|
||||
auto_incremental_review: true
|
||||
ignore_title_keywords:
|
||||
- "WIP"
|
||||
- "DO NOT REVIEW"
|
||||
- "wip"
|
||||
drafts: false
|
||||
base_branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
finishing_touches:
|
||||
docstrings:
|
||||
enabled: true
|
||||
unit_tests:
|
||||
enabled: true
|
||||
custom:
|
||||
- name: "sync documentation"
|
||||
instructions: |
|
||||
This is a PoC/learning project targeting developers unfamiliar with the stack.
|
||||
Documentation is a first-class concern. Review the PR changes and perform the
|
||||
following three checks:
|
||||
|
||||
## 1. Method/function docstrings
|
||||
For every public function, method, or handler touched in the PR:
|
||||
- If it lacks a docstring/doc comment, add one using the idiomatic format
|
||||
for the language and framework in use.
|
||||
- If it has one but no longer matches the current signature, parameters,
|
||||
or behavior, update it.
|
||||
- Docstrings should explain *why* and *what*, not just restate the signature.
|
||||
Assume the reader is learning the language.
|
||||
|
||||
## 2. README.md
|
||||
Check whether the PR introduces or removes endpoints, changes behavior,
|
||||
adds dependencies, or modifies how to run the project.
|
||||
If so, update the relevant sections of README.md to reflect the current state.
|
||||
Do not rewrite sections unrelated to the changes.
|
||||
|
||||
## 3. CLAUDE.md
|
||||
If the PR introduces patterns, conventions, or architectural decisions that
|
||||
should guide future AI-assisted contributions, add or update the relevant
|
||||
instructions in CLAUDE.md.
|
||||
Focus on things a developer (or AI assistant) unfamiliar with this specific
|
||||
stack implementation should know before writing code here.
|
||||
|
||||
- name: "enforce http error handling"
|
||||
instructions: |
|
||||
Audit all HTTP handler functions in the changed files.
|
||||
Ensure errors return appropriate HTTP status codes (400 for bad input,
|
||||
404 for not found, 500 for unexpected errors) and a consistent JSON error
|
||||
body with at least a "message" field.
|
||||
Flag handlers that return 200 on error or swallow errors silently.
|
||||
Use idiomatic error handling patterns for the language and framework in use.
|
||||
|
||||
- name: "idiomatic review"
|
||||
instructions: |
|
||||
Review the changed files for non-idiomatic patterns given the language and
|
||||
framework in use. Flag code that looks like it was translated from another
|
||||
language rather than written naturally for this stack. Suggest idiomatic
|
||||
alternatives with brief explanations. This is a PoC comparison project,
|
||||
so idiomatic usage is a first-class concern.
|
||||
|
||||
- name: "verify api contract"
|
||||
instructions: |
|
||||
Review the changed files and verify that all HTTP endpoints (method, path,
|
||||
request body shape, and response shape) match the project's intended REST API
|
||||
contract. Check the README or any spec/contract file in the repo for reference.
|
||||
Flag any deviations — missing fields, wrong status codes, inconsistent naming.
|
||||
Do not make changes; only report findings as a comment.
|
||||
|
||||
pre_merge_checks:
|
||||
docstrings:
|
||||
mode: warning
|
||||
threshold: 80
|
||||
title:
|
||||
mode: warning
|
||||
requirements: |
|
||||
- Use Conventional Commits format (feat:, fix:, chore:, docs:, test:, refactor:)
|
||||
- Keep under 80 characters
|
||||
- Be descriptive and specific
|
||||
description:
|
||||
mode: off
|
||||
issue_assessment:
|
||||
mode: off
|
||||
|
||||
tools:
|
||||
# Secret scanners
|
||||
gitleaks:
|
||||
enabled: true
|
||||
trufflehog:
|
||||
enabled: true
|
||||
|
||||
# IaC / infrastructure
|
||||
checkov:
|
||||
enabled: true
|
||||
trivy:
|
||||
enabled: true
|
||||
hadolint:
|
||||
enabled: true
|
||||
|
||||
# General static analysis
|
||||
semgrep:
|
||||
enabled: true
|
||||
opengrep:
|
||||
enabled: true
|
||||
|
||||
# File-type linters
|
||||
yamllint:
|
||||
enabled: true
|
||||
actionlint:
|
||||
enabled: true
|
||||
markdownlint:
|
||||
enabled: true
|
||||
dotenvLint:
|
||||
enabled: true
|
||||
checkmake:
|
||||
enabled: true
|
||||
osvScanner:
|
||||
enabled: true
|
||||
github-checks:
|
||||
enabled: true
|
||||
timeout_ms: 120000
|
||||
|
||||
# Disable irrelevant tools for this .NET project
|
||||
shellcheck:
|
||||
enabled: false
|
||||
ruff:
|
||||
enabled: false
|
||||
biome:
|
||||
enabled: false
|
||||
swiftlint:
|
||||
enabled: false
|
||||
phpstan:
|
||||
enabled: false
|
||||
phpmd:
|
||||
enabled: false
|
||||
phpcs:
|
||||
enabled: false
|
||||
golangci-lint:
|
||||
enabled: false
|
||||
detekt:
|
||||
enabled: false
|
||||
eslint:
|
||||
enabled: false
|
||||
flake8:
|
||||
enabled: false
|
||||
pylint:
|
||||
enabled: false
|
||||
rubocop:
|
||||
enabled: false
|
||||
buf:
|
||||
enabled: false
|
||||
regal:
|
||||
enabled: false
|
||||
pmd:
|
||||
enabled: false
|
||||
clang:
|
||||
enabled: false
|
||||
cppcheck:
|
||||
enabled: false
|
||||
clippy:
|
||||
enabled: false
|
||||
sqlfluff:
|
||||
enabled: false
|
||||
prismaLint:
|
||||
enabled: false
|
||||
oxc:
|
||||
enabled: false
|
||||
shopifyThemeCheck:
|
||||
enabled: false
|
||||
luacheck:
|
||||
enabled: false
|
||||
brakeman:
|
||||
enabled: false
|
||||
htmlhint:
|
||||
enabled: false
|
||||
languagetool:
|
||||
enabled: false
|
||||
circleci:
|
||||
enabled: false
|
||||
fortitudeLint:
|
||||
enabled: false
|
||||
stylelint:
|
||||
enabled: false
|
||||
blinter:
|
||||
enabled: false
|
||||
psscriptanalyzer:
|
||||
enabled: false
|
||||
|
||||
chat:
|
||||
art: true
|
||||
auto_reply: true
|
||||
|
||||
knowledge_base:
|
||||
opt_out: false
|
||||
web_search:
|
||||
enabled: true
|
||||
code_guidelines:
|
||||
enabled: true
|
||||
filePatterns:
|
||||
- "CLAUDE.md"
|
||||
- "docs/adr/README.md"
|
||||
learnings:
|
||||
scope: auto
|
||||
issues:
|
||||
scope: auto
|
||||
pull_requests:
|
||||
scope: auto
|
||||
mcp:
|
||||
usage: auto
|
||||
|
||||
code_generation:
|
||||
docstrings:
|
||||
language: en-US
|
||||
path_instructions:
|
||||
- path: "**/*.cs"
|
||||
instructions: |
|
||||
- Use XML documentation comments (///) for public APIs
|
||||
- Include <summary>, <param>, and <returns> tags
|
||||
- Keep documentation concise and meaningful
|
||||
- Don't state the obvious - add value
|
||||
unit_tests:
|
||||
path_instructions:
|
||||
- path: "test/**/*.cs"
|
||||
instructions: |
|
||||
- Use xUnit framework with [Fact] and [Theory] attributes
|
||||
- Follow the two-pattern naming convention (exactly 3 underscore-delimited segments):
|
||||
- Controller tests: {HttpMethod}_{Resource}_{Condition}_Returns{Outcome}
|
||||
- Service/Validator tests: {MethodName}_{StateUnderTest}_{ExpectedBehavior}
|
||||
- Use [Trait("Category", "Unit")] attribute for all unit tests
|
||||
- Use Moq for mocking dependencies
|
||||
- Use FluentAssertions for readable assertions
|
||||
- Ensure async tests return Task
|
||||
- Structure tests with Arrange, Act, Assert comments
|
||||
|
||||
issue_enrichment:
|
||||
auto_enrich:
|
||||
enabled: true
|
||||
planning:
|
||||
enabled: true
|
||||
auto_planning:
|
||||
enabled: true
|
||||
labels:
|
||||
- planning
|
||||
labeling:
|
||||
labeling_instructions: []
|
||||
auto_apply_labels: false
|
||||
Reference in New Issue
Block a user