Plattform-Profile sind vom CodeCharter-Team kuratierte Regelprofile. Sie bieten versionierte, einsatzbereite Regelsets, die ihr direkt in eurer CI-Pipeline referenzieren könnt, ohne einzelne Regeln selbst pflegen zu müssen.
Was Plattform-Profile sind und wer sie pflegt
Plattform-Profile werden zentral vom CodeCharter-Team veröffentlicht und gewartet.
Ihr könnt sie nicht bearbeiten, aber ihr könnt jede veröffentlichte Version
pinnen und in eurer .codecharter/config.yml referenzieren. Jedes Profil hat einen
unveränderlichen Slug im Namensraum codecharter/, zum Beispiel
codecharter/csharp-all, das Dachprofil mit dem vollständigen C#-Regelset.
Profile: Adoptionsstufen und Add-ons
Der Plattform-Regelsatz ist als drei ineinander verschachtelte Adoptionsstufen plus einige fokussierte Add-on-Profile organisiert, sodass ihr klein anfangen und schrittweise hochziehen könnt:
| Slug | Anzeigename | Abdeckung |
|---|---|---|
codecharter/recommended |
Recommended | Einstieg: ein kleiner, signalstarker Satz aus echten Korrektheitsrisiken sowie den Namens- und Kapselungsregeln, denen praktisch jedes C#-Team ohnehin folgt |
codecharter/standard |
Standard | Recommended plus die gängigen Regeln zu Naming, Async, Komplexität und API-Design |
codecharter/strict |
Strict | Standard plus die anspruchsvolleren Metrik-, Design- und Stilregeln |
codecharter/aspnetcore |
ASP.NET Core | Add-on: ASP.NET-Core-Controller, Actions und Routing-Konventionen |
codecharter/documentation |
Documentation | Add-on: Abdeckung mit XML-Dokumentationskommentaren |
codecharter/conventions |
Method & Role Conventions | Opt-in: rollen- und verbbasierte Namens- und Methodenform-Konventionen (ein bewusster Hausstil) |
codecharter/csharp-all |
C# All Rules | Dachprofil: alle eingebauten Regeln |
Die Stufen verschachteln sich: recommended ⊂ standard ⊂ strict. Die Add-ons
kombiniert ihr mit jeder Stufe: Wählt eine Stufe und ergänzt
codecharter/aspnetcore für Web-Projekte oder codecharter/documentation für
Bibliotheken. codecharter/conventions ist ein meinungsstarker Hausstil und nicht
Teil der Stufen; aktiviert es nur, wenn ihr diese Konventionen wünscht.
codecharter/csharp-all bleibt das Dachprofil mit allen Regeln.
Die genaue Regelliste jedes Profils seht ihr auf seiner Detailseite unter
Plattform-Profile im Portal. Jedes Profil referenziert ihr in
eurer .codecharter/config.yml auf dieselbe Weise:
# .codecharter/config.yml
version: 1
profiles: ["codecharter/recommended@1.0.0"]
Profile durchsuchen
Öffnet Plattform-Profile in der Seitenleiste (/platform-rules), um alle
verfügbaren Plattform-Profile zu sehen. Jede Karte zeigt den Profil-Slug, den
Anzeigenamen, die zuletzt veröffentlichte Version und die Anzahl der enthaltenen
Regeln. Der Button Details öffnet die Profilseite mit zwei Tabs: Aktuelle
Version listet die Regeln der neuesten Version, Versionsverlauf zeigt alle
Versionen mit Veröffentlichungsdatum, Regelanzahl und Status.
Eine Plattform-Profil-Version pinnen
Um ein Plattform-Profil in eurer CI zu verwenden, kopiert ihr das fertige
CI-Snippet und tragt es in eure .codecharter/config.yml ein:
- Klickt auf CI-Snippet kopieren auf der Profilkarte. Das kopierte Snippet enthält bereits den Slug und die neueste Version des Profils.
- Fügt das Snippet in eure
.codecharter/config.ymlein:
# .codecharter/config.yml
version: 1
profiles: ["codecharter/csharp-all@1.0.0"]
- Führt lokal
codecharter updateaus, um das Lockfile zu aktualisieren. Der Befehl verwendet standardmäßig das gehostete Portal und authentifiziert sich mit eurer installierten Lizenz. Für ein selbst gehostetes Portal übergebt ihr--portal-url; ein API-Key mit dem Scoperead:rules(anlegbar auf der Seite API-Keys im Portal) lässt sich optional per--api-keyübergeben:
codecharter update --portal-url https://<portal-url> --api-key <api-key>
- Committet
.codecharter/config.ymlund.codecharter/codecharter.lock.jsonzusammen in einem PR.
Legt die .codecharter/config.yml in euer Repository, damit codecharter analyze
sie findet. In der CI lädt codecharter restore das Profil dann anhand des
Lockfiles herunter, ohne das Portal für eine Versionsauflösung abzufragen.
restore braucht keinen API-Key, es authentifiziert sich mit eurer
installierten Lizenz. Fehlt der Cache, führt codecharter analyze automatisch
ein implizites Restore aus.
Updates: wann und wie ihr aktualisiert
Plattform-Profile folgen semantischer Versionierung. Wenn der Kurator eine neue Version veröffentlicht, passiert in eurer CI nichts automatisch: Euer Lockfile ist eingefroren. Um auf eine neue Version zu wechseln:
- Ändert die Version in
.codecharter/config.ymlauf die gewünschte neue Version. - Führt
codecharter updatelokal aus. - Prüft den Diff der neuen Regeln und mergt den PR.
Patch-Releases (x.y.Z) sind nicht brechend. Minor-Releases (x.Y.0) können
neue Regeln enthalten, die vorher nicht geprüft wurden. Major-Releases (X.0.0)
können brechende Änderungen umfassen, zum Beispiel entfernte oder umbenannte
Regeln.
Yank: was passiert, wenn eine Version zurückgezogen wird
Wenn das CodeCharter-Team eine Version als fehlerhaft zurückzieht (Yank), zeigt
die CLI beim nächsten codecharter update eine Warnung:
warning: Profile <slug>@<version> was yanked. Reason: <reason>. Consider running `codecharter update` to move to the next version.
Die Warnung blockiert den Befehl nicht und euer Build bleibt funktionsfähig. Wir empfehlen dennoch, zeitnah auf eine nicht-yanked Version zu wechseln.
Neben dem manuellen Zurückziehen fehlerhafter Versionen zieht das CodeCharter-Team auch Versionen zurück, deren gepinnte Regeln die aktuelle Engine nicht mehr auswerten kann, denn sonst würde ein Teil des Regelsets stillschweigend übersprungen. Für euch verhalten sich beide Fälle gleich:
@latestund andere Float-Angaben überspringen zurückgezogene Versionen und lösen auf ein Release auf, dessen Regeln vollständig laufen.- Ein exakter Pin auf eine zurückgezogene Version funktioniert weiterhin und
restauriert byte-identisch;
codecharter updatenennt euch dabei den Grund des Rückzugs, damit ihr den Wechsel selbst planen könnt.
Plattform-Refs in eigenen Profilen einbinden
Ihr könnt ein Plattform-Profil als Basis für euer eigenes Profil verwenden. Öffnet euer Profil im Editor und geht zum Bereich Plattform-Profilabhängigkeiten. Über Plattform-Profil hinzufügen… öffnet sich eine Auswahl, in der ihr ein Plattform-Profil mit einer exakten Version referenziert. Die Abhängigkeit erscheint danach als Zeile mit Slug und gepinnter Version.
Einzelne Regeln eines Plattform-Profils passt ihr über eure
.codecharter/config.yml an: Der Abschnitt overrides ändert die Severity einer
Regel, der Abschnitt ignore schaltet sie vollständig ab. Regeln werden über
ihren Slug adressiert, der über alle Profile hinweg eindeutig ist:
# .codecharter/config.yml
version: 1
overrides:
<rule-slug>:
severity: warning
ignore:
- rule: <other-rule-slug>
So könnt ihr Plattform-Standards als Grundlage nehmen und projektspezifische Regeln ergänzend hinzufügen. Den vollständigen Satz an Abschnitten findet ihr unter Konfigurationsdatei.