CodeCharter erwartet die Regelmenge in einem rules/-Verzeichnis. Ohne
--rules sucht die CLI zuerst nach rules/ im aktuellen Arbeitsverzeichnis
und greift andernfalls auf die mit der CLI ausgelieferte Regelmenge zurück.
Über die Option --rules <dir> zeigen Sie auf ein beliebiges Verzeichnis.
Empfohlenes Layout im Repo
rules/
├── architecture/
│ ├── domain-must-not-reference-web.ccr
│ └── repository-naming.ccr
├── naming/
│ ├── no-manager-suffix.ccr
│ ├── no-manager-suffix.spec.md
│ └── async-suffix.ccr
└── team-conventions/
└── controller-action-limit.ccr
.codecharter/config.yml
Unterverzeichnisse unter rules/ sind frei wählbar. CodeCharter liest
rekursiv alle .ccr-Dateien. Ältere .cgr-Dateien aus der Zeit vor der
Umbenennung von CodeGuard zu CodeCharter werden zur Abwärtskompatibilität
weiterhin gelesen, damit bestehende Repositories nicht angepasst werden müssen.
Die Regel-ID ist der Dateiname ohne die Endung .ccr; die Namen der
Unterverzeichnisse haben keine Bedeutung. Diese IDs werden in
.codecharter/config.yml-Einträgen und Suppression-Kommentaren referenziert.
Vermeiden Sie deshalb gleiche Dateinamen in verschiedenen Ordnern.
Spec-Tests liegen als <regel-name>.spec.md neben der .ccr-Datei und
werden von codecharter test rekursiv gefunden.
rules/ initialisieren
codecharter init
Legt ein rules/-Verzeichnis mit zwei Beispiel-Regeln an, von dem aus Sie
weiter wachsen können.
.codecharter/config.yml
Die Repository-Konfiguration liegt unter .codecharter/config.yml. Neben anderen
Abschnitten schaltet ignore Regeln ab (optional auf einen Namespace oder
passende Entity-Namen beschränkt), und exclude nimmt ganze Pfade aus der
Analyse:
version: 1
ignore:
- rule: namespace-distance
in: Acme.Generated
- rule: async-suffix
exclude:
- "**/tests/**"
- "**/obj/**"
Den vollständigen Satz an Abschnitten (Profile, Parameter, Severities, Regel-Aktivierung und Pfad-Scopes) finden Sie unter Konfigurationsdatei.
Inline-Suppressions
Pro Stelle im Code:
// codecharter-disable-next-line datetime-direct-usage
var migrationTimestamp = DateTime.UtcNow;
Die Regel-ID im Kommentar muss exakt dem Dateinamen der Regel entsprechen, inklusive Groß- und Kleinschreibung. Siehe Suppressions für alle Varianten.
Plattform-Profile im Repo
Wenn Sie Plattform-Profile nutzen, listen Sie sie in .codecharter/config.yml,
.codecharter/codecharter.lock.json liegt im Verzeichnis .codecharter/, und das
Verzeichnis .codecharter/cache/ enthält die heruntergeladenen Regel-Bundles. Mit
konfigurierten Profilen ist ein lokales rules/-Verzeichnis optional.
Multi-Repo und Monorepo
In einem Monorepo können Sie rules/-Verzeichnisse pro Sub-Projekt haben
und über --rules darauf zeigen. CodeCharter findet .codecharter/config.yml,
indem es von der analysierten Datei aufwärts sucht; eine Konfiguration im
Repository-Wurzelverzeichnis gilt damit für alles darunter.