Skip to content

Datei-Struktur

Wie Ihre Regelmenge im Repo organisiert ist.

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.