code-review-suppression
Project-specific rules to suppress false positives during code reviews
gstack pattern reference: Specify "do not flag this" in the review checklist to reduce alert fatigue.
Default Suppressions (Dart Full-Stack)#
Code Generation Related#
-
Freezed generated code (
*.freezed.dart,*.g.dart): Auto-generated files are excluded from review -
Serverpod generated code (
*_server/lib/src/generated/): Server auto-generated code excluded -
slang i18n generated files (
*_gen/*.g.dart): Translation auto-generated files excluded
The pattern rules below — except the generated-file globs and the two judgment-call rules (duplicate code for readability, missing const inside widgets) — are also the options of the reflex question set
<code-review-checklist skill dir>/jev/suppression-match.json, one option per rule. Change both together.
Framework Pattern Related#
- BLoC boilerplate: sealed class Event/State definitions are not flagged as boilerplate
-
context.read<>(): Usage in BLoC event dispatch is not an anti-pattern (only problematic inside build) -
Freezed copyWith: Long
.copyWith()chains are not flagged for refactoring - sealed class pattern: Long case lists in when/map methods or a switch over a sealed class are a normal pattern
CoUI Component Related#
-
No Co prefix: CoUI widgets use
Button,Cardetc. without prefix (differs from Flutter Material) -
No ButtonSize.medium:
ButtonSize.normalis the default, do not suggest using medium -
Dot shorthand: Dart 3.10+
.start,.all()etc. shorthand syntax is normal
Project Structure Related#
- melos monorepo import: Relative path imports between packages are normal in melos structure
- feature module barrel export:
feature.dartbarrel file is convention -
GetIt DI registration:
getIt.registerFactory/Singletonpattern does not need flagging
Style/Convention Related#
- Duplicate code for readability: Repetitive code explicitly for clarity is not flagged as DRY violation
-
Missing const (inside widgets): Do not enforce
constwhen it hurts readability - Korean comments/strings: Korean usage is the project standard
Project-Specific Custom Suppressions#
Create .code-review-suppress.md at the user project root to define additional suppressions:
# Project-Specific Suppressions
- **Legacy API calls**: Usage of deprecated API at `api/v1/` path is not flagged as it is under migration
- **TODO comments**: TODOs planned for the current sprint are ignored
Suppression Application#
-
This file and the project's
.code-review-suppress.mdare automatically loaded during review -
Each flagged item is compared against the suppression list:
- Path rules (generated files) are globs — matched in code, never by a model.
- Default pattern rules above:
/cc-quality:reviewaskscc-dev:jev-reflexfirst, once for all findings (RV2,--items— see the review command). Jev suppresses a finding only on areflexanswer naming a rule, and never a Critical on its own: for a Critical the match is a hint Claude confirms against the rule. Onnone_of_these, a deliberate answer or unavailable (any exit other than 0/4), Jev suppresses nothing and Claude matches exactly as before. The two judgment-call rules (duplicate code for readability, missing const) are always Claude's. A finding suppressed on a Jev match shows its rule id andjevinSuppressed (N). Measured (jev-1.13.0, 2026-09-28, two runs identical): 18/20 matched correctly, 2 left to Claude, 0 wrong — including 4 keyword traps that must stay findings. - Project rules in
.code-review-suppress.mdare compared by Claude (they are not in the question set).
- Matching items are excluded from review results
- Number of excluded items displayed at bottom: "N items excluded by suppression"