Zum Inhalt springen

config.yml über die CodeCharter-CLI bearbeiten

.codecharter/config.yml über die Kommandozeile lesen und bearbeiten, Parameter und Severities setzen und Profile verwalten, ohne YAML von Hand zu editieren.

Die Befehlsgruppe config liest und bearbeitet .codecharter/config.yml für Sie. Jeder Schreibvorgang erhält Ihre Kommentare, die Schlüsselreihenfolge und die Formatierung, prüft die Änderung vor dem Schreiben und hinterlässt die Datei nie halb geschrieben.

codecharter config <unterbefehl> [argumente] [optionen]

Das Format der Konfigurationsdatei selbst (Profile, Parameter, Severities, Regel-Aktivierung und Pfad-Scopes) beschreibt Konfigurationsdatei. Diese Seite behandelt die Befehle, die sie verändern.

Konfiguration inspizieren

  • codecharter config explain <pfad> zeigt die effektive Konfiguration für eine Quelldatei, samt der Schicht, aus der jeder Wert stammt. Mit --json gibt es maschinenlesbare Ausgabe.
  • codecharter config validate prüft die Datei auf Strukturfehler, unbekannte Regeln, ungültige Parameterwerte und Einträge, die nie greifen.
  • codecharter config schema gibt ein JSON-Schema für die Editor-Vervollständigung aus. Mit --out <datei> schreiben Sie es auf die Festplatte.
  • codecharter config get <schlüssel> gibt den rohen Wert eines einzelnen Schlüssels aus.
  • codecharter config list [abschnitt] gibt eine Übersicht aller Abschnitte aus oder die Einträge eines Abschnitts (profiles, params, overrides, ignore, include, exclude, scopes, coverage).

get erwartet einen punktierten Schlüssel: params.<regel>.<name>, overrides.<regel>.severity, profiles.<slug> oder einen der skalaren Coverage-Schlüssel coverage.minimum-percent, coverage.snippet-context-lines und coverage.max-parallel-test-projects. Mit --scope "<glob>" lesen Sie aus dem Scope, dessen match diesem Glob entspricht, statt aus der Basisschicht.

Werte bearbeiten: set und unset

codecharter config set <schlüssel> <wert> [--scope <glob>] [--local] [--dry-run] [--rules <dir>]
codecharter config unset <schlüssel> [--local] [--dry-run]

set schreibt einen Parameter, einen Severity-Override oder eine Profil-Version:

codecharter config set params.cyclomatic-complexity.max 15
codecharter config set overrides.magic-number.severity warning
codecharter config set profiles.dotnet-base 1.4.2
codecharter config set coverage.minimum-percent 99.5

Der Wert wird vor dem Schreiben geprüft: eine unbekannte Regel, ein Parameter, den die Regel nicht anbietet, ein Wert außerhalb des erlaubten Bereichs oder eine ungültige Severity werden abgelehnt, und die Datei bleibt unverändert (Exit-Code 10). unset entfernt einen params- oder overrides-Eintrag wieder.

Um Parameterwerte gegen Ihre Regeln zu prüfen, geben Sie mit --rules ein Verzeichnis mit .ccr-Dateien an. Ohne diese Angabe greift dieselbe Erkennung wie bei analyze: ./rules.

Listen verwalten: add und remove

codecharter config add <abschnitt> [wert] [--in <ns>] [--match <glob>] [--path <datei>] [--scope <glob>] [--local] [--dry-run]
codecharter config remove <abschnitt> [wert] [--in <ns>] [--match <glob>] [--path <datei>] [--scope <glob>] [--local]

add und remove verwalten die listenwertigen Abschnitte:

codecharter config add exclude "**/Migrations/**"
codecharter config add profiles security@latest
codecharter config add ignore todo-comment --in Acme.Generated
codecharter config add include todo-comment --match "*Dto"
codecharter config add coverage.exclude "**/*.Designer.cs"

Bei ignore und include schränkt --in den Eintrag auf einen Namespace ein und --match auf Entitäten, deren gemeldeter Name einem Glob entspricht. Bei einem Typ, einer Methode, Property oder einem Field ist dieser Name vollqualifiziert (Namespace plus einfacher Name), und ein Muster ohne führendes * muss an der Namespace-Wurzel beginnen; Events und Findings auf Vorkommen-Ebene (Parameter, Member-Zugriffe und Ähnliches) werden stattdessen mit ihrem einfachen, unqualifizierten Namen gemeldet. Bei profiles verweisen Sie mit --path auf eine lokale Bundle-Datei statt auf einen Slug. remove löscht den passenden Eintrag; ein mehrdeutiges Entfernen, das auf mehrere Einträge passt, wird als Nutzungsfehler gemeldet, statt zu raten.

Coverage-Schlüssel

Das Coverage-Gate konfigurieren Sie auf demselben Weg, mit zwei Unterschieden. Die drei skalaren Schlüssel minimum-percent, snippet-context-lines und max-parallel-test-projects laufen über set/unset/get, die beiden Glob-Listen dagegen als coverage.exclude und coverage.excluded-directories über add/remove. Und weil der Abschnitt repositoryweit gilt, wird --scope bei jedem Coverage-Schlüssel abgelehnt. --local, --dry-run, promote und demote verhalten sich wie überall sonst.

codecharter config set coverage.max-parallel-test-projects 1
codecharter config add coverage.excluded-directories "vendor/**"

config list coverage gibt die Schlüssel aus, die Ihre Datei tatsächlich setzt, die Skalare als schlüssel: wert und jeden Glob in einer eigenen exclude:- oder excluded-directories:-Zeile. In der Übersicht zählt der Abschnitt gesetzte Schlüssel statt Einträge, coverage: 2 bedeutet also, dass zwei der fünf Schlüssel konfiguriert sind. Ein nie gesetzter Schlüssel fehlt in der Ausgabe, statt mit seinem eingebauten Standardwert zu erscheinen.

Scopes und das lokale Overlay ansteuern

Zwei Optionen bestimmen, wohin ein Schreibvorgang geht; sie gelten für set, unset, add und remove:

  • --scope "<glob>" schreibt in den Scope, dessen match diesem Glob entspricht, und legt den Scope am Ende der Datei an, falls er noch nicht existiert. Ohne diese Option gehen Schreibvorgänge in die Basisschicht.
  • --local zielt auf .codecharter/config.local.yml (Ihr persönliches, lokales Overlay) statt auf die eingecheckte config.yml.

--dry-run gibt den Unified-Diff der geplanten Änderung aus und schreibt nichts. Kombinieren Sie es mit jedem Schreibvorgang, um die Änderung vorab zu sehen.

Gerüst und Aufräumen: init und tidy

codecharter config init [--at <dir>] [--profiles <csv>] [--local] [--force] [--dry-run]
codecharter config tidy [--local] [--dry-run]

init erstellt eine minimale .codecharter/config.yml (nur version: 1). Mit --profiles "dotnet-base@1.4.2,security@latest" setzen Sie Startprofile, mit --at wählen Sie das Verzeichnis, mit --local legen Sie stattdessen das lokale Overlay an, und mit --force überschreiben Sie eine bestehende Datei.

init sorgt außerdem dafür, dass .codecharter/cache/ in der .gitignore steht (die Datei wird bei Bedarf angelegt, ein passender Eintrag ergänzt), damit die Disk-Caches mehrerer Tools – darunter der Bundle-Cache von restore und der Revisions-Snapshot-Cache von graph diff – nicht versehentlich eingecheckt werden. Ignoriert ein Repo bereits das gesamte .codecharter/-Verzeichnis oder enthält es den Eintrag schon, bleibt die Datei unverändert. Dieser Schritt ist Best-Effort: ein I/O-Fehler hier lässt init selbst nicht scheitern, da die Konfigurationsdatei bereits erfolgreich angelegt wurde.

tidy entfernt leere Abschnitte, die frühere Bearbeitungen hinterlassen haben, und hält die Datei sauber.

Das lokale Overlay: config local

codecharter config local clone [--force] [--dry-run]
codecharter config local diff
codecharter config local clear [schlüssel...] [--dry-run]

.codecharter/config.local.yml überschreibt config.yml auf Ihrem Rechner und wird nie eingecheckt (nehmen Sie es in .gitignore auf). Die Untergruppe local verwaltet es:

  • clone kopiert die eingecheckte Konfiguration als Ausgangspunkt nach config.local.yml. --force überschreibt ein bestehendes Overlay.
  • diff zeigt, was das Overlay aktuell überschreibt.
  • clear entfernt bestimmte punktierte Schlüssel aus dem Overlay oder löscht die gesamte Overlay-Datei, wenn keine Schlüssel angegeben sind.

Einstellungen zwischen Schichten verschieben: promote und demote

codecharter config promote [schlüssel] [--all] [--keep] [--dry-run] [--rules <dir>]
codecharter config demote [schlüssel] [--all] [--dry-run] [--rules <dir>]
  • promote verschiebt eine Einstellung aus Ihrem lokalen Overlay in die eingecheckte config.yml, wenn eine persönliche Anpassung zum Team-Standard werden soll. --keep kopiert statt zu verschieben (der Eintrag bleibt im Overlay), und --all befördert das gesamte Overlay und leert es danach.
  • demote kopiert eine eingecheckte Einstellung in Ihr lokales Overlay, sodass Sie lokal davon abweichen können, ohne die geteilte Datei zu ändern. --all kopiert die gesamte eingecheckte Konfiguration ins Overlay.

Ein häufiges Muster: demote profiles.dotnet-base, gefolgt von set profiles.dotnet-base latest --local, pinnt das Team auf eine exakte Version, während Sie auf Ihrem Rechner die neueste verfolgen.

Exit-Codes

Die lesenden Befehle get und list verwenden:

  • 0: Erfolg.
  • 1: keine .codecharter/config.yml gefunden.
  • 2: Nutzungsfehler (zum Beispiel ein nicht parsbarer Schlüssel).

Die bearbeitenden Befehle (set, unset, add, remove, init, tidy, die Untergruppe local, promote, demote) verwenden:

  • 0: Erfolg, einschließlich --dry-run-Vorschauen.
  • 2: Nutzungsfehler (falsche Argumente oder ein mehrdeutiges remove).
  • 10: Validierungsfehler, die Änderung wurde abgelehnt und die Datei blieb unverändert.