Zum Inhalt springen

Organisation in der CLI wählen

Wie die CLI wählt, als welche Organisation sie handelt, wenn deine Lizenz mehrere abdeckt, und was zu tun ist, wenn sie es nicht eindeutig entscheiden kann.

Deine Lizenz zählt jede Organisation auf, der du angehörst. Ist das nur eine einzige, handelt die CLI automatisch als diese Organisation, und diese Seite betrifft dich nicht. Sind es mehrere, müssen restore und analyze wissen, unter welcher Organisation, mit welchen Profilen und Berechtigungen und in welchem Namensraum der aktuelle Lauf stattfinden soll. Die Befehle, die mit deiner Lizenz das Portal aufrufen (update, restore, rules search, push, verify --against-portal und das MCP-Tool search_rules), schicken dieselbe Organisation mit; ein API-Key gehört bereits zu genau einer Organisation und braucht keine Auswahl.

Wie die CLI eine Organisation wählt

Die CLI löst die handelnde Organisation in dieser Reihenfolge auf und stoppt beim ersten Treffer:

  1. org: <slug> in der hierarchisch aufgelösten .codecharter/config.yml (der Wert, der der analysierten Datei am nächsten liegt, gewinnt, wie bei der übrigen Konfigurationshierarchie üblich). Siehe Konfigurationsdatei.
  2. Die Umgebungsvariable CODECHARTER_ORG, sofern org: nicht gesetzt ist.
  3. Die einzige Organisation deiner Lizenz, sofern diese genau eine abdeckt. Das ist der Zero-Config-Fall und braucht weder org: noch die Umgebungsvariable.
  4. Löst nichts davon eine Organisation auf und deckt deine Lizenz mehr als eine ab, bricht die CLI mit einer Fehlermeldung und Exit-Code 64 ab und nennt dabei jede Organisation, die deine Lizenz abdeckt, sowie den Weg zur Auswahl.
# .codecharter/config.yml
org: vistron
profiles:
  - dotnet-rules@^2
# gleichwertig, ohne config.yml zu ändern
export CODECHARTER_ORG=vistron
codecharter analyze MySolution.sln

Nennst du eine Organisation, die deine Lizenz nicht abdeckt, etwa durch einen Tippfehler oder weil du die Organisation zwischenzeitlich verlassen hast, bricht die CLI mit Exit-Code 6 ab und nennt die Organisationen, die die Lizenz tatsächlich trägt. Führe codecharter update aus, um deine Lizenz nach dem Beitritt zu einer neuen Organisation zu aktualisieren; eine gecachte Lizenz spiegelt nur die Mitgliedschaften wider, mit denen sie ausgestellt wurde.

Warum das nur bei Lizenzen mit mehreren Organisationen auftritt

Eine Lizenz mit nur einer Organisation trägt diese implizit und eindeutig, es gibt also nichts zu wählen, und die CLI verhält sich wie bisher. Sobald eine zweite Organisation auf deiner Lizenz erscheint, etwa weil du einem zweiten Team hinzugefügt wurdest, wird für jeden Befehl, der wissen muss, welche Organisation mit ihren Profilen und Kontingenten gilt, eine Entscheidung nötig. Das zeigt sich typischerweise beim nächsten CI-Lauf nach der Aufnahme in eine zweite Organisation, solange org: noch nirgends gesetzt ist. Leg deshalb org: oder die Umgebungsvariable schon beim Onboarding in eine zweite Organisation fest, um einen fehlschlagenden Build zu vermeiden.

Profilreferenzen und Organisationen

Eine Profilreferenz ohne Namensraum (dotnet-rules@^2) wird innerhalb der aktuell gewählten Organisation aufgelöst. Eine Referenz mit Namensraum (vistron/dotnet-rules@^2) kann auf das Profil einer anderen Organisation verweisen als der, als die du gerade handelst; die CLI prüft dabei deine aktuelle Mitgliedschaft in dieser Organisation, bevor sie das Profil ausliefert. Der Zugriff spiegelt also stets deine aktuellen Mitgliedschaften wider, nicht den Stand zum Ausstellungszeitpunkt deiner Lizenz.

Exit-Codes

Code Bedeutung
64 Deine Lizenz deckt mehr als eine Organisation ab, und keine wurde per org: oder CODECHARTER_ORG gewählt.
6 Es wurde eine Organisation genannt (per org: oder CODECHARTER_ORG), die deine Lizenz nicht abdeckt. Siehe Lizenzdatei.

Die vollständige Tabelle findest du unter Exit-Codes.

Weiterführend