We welcome contributions! Please follow these guidelines to keep things smooth.
- Fork the repository
- Create a feature branch from
main - Make your changes
- Ensure all tests pass (
dotnet test) - Open a pull request
- .NET 10.0 SDK
- An IDE that supports .editorconfig (e.g. Visual Studio, Rider, VS Code with C# Dev Kit)
- Follow the
.editorconfigrules - Use file-scoped namespaces
- Add XML documentation comments to all public members
- Use
requiredkeyword for required DTO properties - Prefer
System.Text.JsonoverNewtonsoft.Json - Use Refit for any HTTP client interfaces
- Keep
TreatWarningsAsErrorsenabled — fix warnings, don't suppress them
- Create a new class extending
RuleBasein theRules/directory - Group related rules in the same file by category
- Assign a unique
RuleIdfollowing the pattern:{CATEGORY}-{NN}(e.g.CI-08) - Add the appropriate
AssessmentCategoryandAssessmentSeverity - Provide clear
MessageandRemediationtext inFail()results - The rule will be automatically discovered by
RuleRegistry
- Code compiles with zero warnings
- All existing tests pass
- New rules have corresponding tests
- XML documentation on public API
- No Newtonsoft.Json references
- No suppressed warnings without justification
By contributing, you agree that your contributions will be licensed under the MIT License.