Die Befehlsgruppe config liest und bearbeitet .codecharter/config.yml für dich.
Jeder Schreibvorgang erhält deine 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--jsongibt es maschinenlesbare Ausgabe.codecharter config validateprüft die Datei auf Strukturfehler, unbekannte Regeln, ungültige Parameterwerte und Einträge, die nie greifen.codecharter config schemagibt ein JSON-Schema für die Editor-Vervollständigung aus. Mit--out <datei>schreibst du 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>" liest du 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.
Parameterwerte werden gegen die Regeln geprüft, die die Config unter
profiles: und rules: deklariert, also dieselben Quellen, die
analyze liest. --rules fügt ein
Verzeichnis mit .ccr- oder .cgr-Dateien hinzu. Ein nicht deklarierter
rules-Ordner wird nicht gelesen.
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"
codecharter config add rules .codecharter/rules
rules deklariert ein lokales Regelverzeichnis, aufgelöst gegen das
Repository-Root. Nur so kommt ein lokales Verzeichnis ohne --rules in einen
Lauf (erfordert CodeCharter 1.6.4; config validate weist darauf hin, damit
ältere CLIs, die den Schlüssel ignorieren würden, auffallen).
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
verweist du 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 konfigurierst du 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 deine 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, dessenmatchdiesem 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.--localzielt auf.codecharter/config.local.yml(dein persönliches, lokales Overlay) statt auf die eingecheckteconfig.yml.
--dry-run gibt den Unified-Diff der geplanten Änderung aus und schreibt
nichts. Kombiniere 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" setzt du Startprofile, mit
--at wählst du das Verzeichnis, mit --local legst du stattdessen das lokale
Overlay an, und mit --force überschreibst du 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 deinem Rechner und
wird nie eingecheckt (nimm es in .gitignore auf). Die Untergruppe
local verwaltet es:
clonekopiert die eingecheckte Konfiguration als Ausgangspunkt nachconfig.local.yml.--forceüberschreibt ein bestehendes Overlay.diffzeigt, was das Overlay aktuell überschreibt.clearentfernt 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>]
promoteverschiebt eine Einstellung aus deinem lokalen Overlay in die eingecheckteconfig.yml, wenn eine persönliche Anpassung zum Team-Standard werden soll.--keepkopiert statt zu verschieben (der Eintrag bleibt im Overlay), und--allbefördert das gesamte Overlay und leert es danach.demotekopiert eine eingecheckte Einstellung in dein lokales Overlay, sodass du lokal davon abweichen kannst, ohne die geteilte Datei zu ändern.--allkopiert 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 du auf deinem Rechner die neueste verfolgst.
Exit-Codes
Die lesenden Befehle get und list verwenden:
0: Erfolg.1: keine.codecharter/config.ymlgefunden.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 mehrdeutigesremove).10: Validierungsfehler, die Änderung wurde abgelehnt und die Datei blieb unverändert.