Begriffe, die im Wiki, in der CLI-Ausgabe oder im Portal auftauchen, kurz erklärt.
Anchor
Der Eintrag in einer .req.md-Datei, der ein Requirement an die Stelle im
Code bindet, die es einlöst. Drei Arten sind möglich: ein symbol_id: auf
ein vollqualifiziertes Symbol, ein file: mit selector: auf eine Stelle in
einer Datei, oder ein attribute_expected:, das ein [Satisfies("REQ-1")]
am umsetzenden Member erwartet. Ein Requirement mit status: implemented
ohne Anchor ist ein Fehler. Siehe
Requirements.
API-Key
Ein langer, geheimer String, der im Portal unter API Keys erzeugt und in eurer CI als Secret hinterlegt wird. Authentifiziert CLI- und CI-Anfragen gegen das Portal, zum Beispiel CLI-Downloads und den Lizenzabruf. Mehr unter API-Keys verwalten.
Baseline
Ein Schnappschuss vorhandener Findings, geschrieben mit
--write-baseline. Wird er über --baseline wieder übergeben, werden
die erfassten Findings unterdrückt, sodass nur neue Findings gemeldet
werden und den Build blockieren. Nützlich, wenn CodeCharter in eine bestehende
Codebasis eingeführt wird.
Bundle
Ein signiertes ZIP-Archiv (.cgbundle) mit den Regeln eines Profils.
Bundles lädt codecharter restore aus dem Portal herunter; alternativ
lassen sie sich offline in .codecharter/config.yml über einen path:-Eintrag
referenzieren.
Carrier
Der Schlüssel eines Criterions, der festlegt, wie es verifiziert wird. Genau
einer von rule:, test:, manual:, integration: oder external: muss
gesetzt sein; null oder mehr als einer ist ein Fehler, den
codecharter req check meldet.
Ccr-Datei
Die Dateiendung für CodeCharter-Regeln. Eine .ccr-Datei enthält
Metadaten (@name, @severity, ...) und eine LINQ-Query gegen
das Schema. Siehe Datei-Struktur.
Channel
Release-Channel der CodeCharter-Distributionen. Alle aktuellen Releases erscheinen im Channel Stable.
CLI
Die Standalone-Kommandozeilen-Variante von CodeCharter. Liegt als selbst-enthaltenes Binary für Windows, Linux und macOS vor, läuft ohne installierte .NET-Runtime.
CodeCharter-DSL
Die kleine LINQ-ähnliche Sprache, in der eigene Regeln geschrieben werden. Siehe DSL-Referenz.
Criterion
Eine einzelne Abnahmeprüfung eines Requirements, mit einer eigenen Id und
genau einem Carrier. Der Plural ist Criteria. Ein Requirement, das auf
implemented steht, während eines seiner Criteria noch offen ist, ist ein
Widerspruch, den codecharter req check meldet.
Kopplungsgraph
Der signatur-basierte Abhängigkeitsgraph, den codecharter graph aus eurer
analysierten Solution projiziert: Typen (auf der aggregierten Ebene
zusätzlich Projekte oder Namespaces) als Knoten, deklarierte Vererbung,
Interfaces und Member-Typen als Kanten. Abfragbar auf drei Arten –
overview, neighborhood, impact – auf der Kommandozeile und als
MCP-Tools. Siehe codecharter graph.
Determinismus
CodeCharter-Eigenschaft: gleicher Source-Code und gleiche Regelmenge ergeben jedes Mal exakt die gleichen Findings, unabhängig von Rechner, Tageszeit oder Systemlast. Siehe Determinismus und Caching.
Device-Token
Das Credential, das codecharter login auf einer Maschine ablegt, nachdem
ihr die Anmeldung im Browser bestätigt habt. Es beginnt mit cgd_, kann
ausschließlich eine kurzlebige Lizenz ausstellen, läuft von selbst nicht ab
und lässt sich pro Maschine im Portal widerrufen, siehe
Browser-Anmeldung.
Diff-Modus
Beschränkt die Analyse auf geänderte Zeilen. Ein Unified Diff wird per
--diff übergeben, eine Git-Range per --git-ref (zum Beispiel
main..HEAD); in der GitHub Action über den Input diff. Findings und
das --fail-on-Gate gelten dann nur für geänderte Zeilen.
Finding
Ein konkreter Verstoß gegen eine Regel an einer konkreten Stelle im
Code. Hat eine Severity (info, warn, error), einen Dateipfad, eine
Zeilennummer sowie Beschreibung und Empfehlung der Regel.
GitHub Action
Die offizielle CI-Integration bochmann-software/codecharter@v1. Führt
CodeCharter in der Pipeline gegen eure Solution aus und veröffentlicht
Findings als PR-Annotations.
Justification
Der Weg vom [Satisfies]-Anchor eines Requirements über den Aufrufgraphen zu
einer Methode. Eine Methode, die auf diesem Weg erreicht wird, gilt als
gerechtfertigt und zählt in die
Requirements-Coverage ein. Wird sie von
keinem Requirement erreicht, ist sie unjustified.
Lizenzdatei
Die Datei codecharter.license, die die CLI vor jedem Befehl prüft.
Gesucht wird neben dem CLI-Binary, im Arbeitsverzeichnis und im
Benutzer-Konfigurationsverzeichnis; der Pfad lässt sich über --license
oder die Umgebungsvariable CODECHARTER_LICENSE überschreiben. Die CLI
erneuert die Lizenz automatisch aus einem API-Key oder aus einem
Device-Token; CODECHARTER_API_KEY hat Vorrang vor einem gespeicherten
Device-Token, siehe
Credentials und Reihenfolge.
Lockfile
Die Datei .codecharter/codecharter.lock.json im Verzeichnis .codecharter/ eures
Repositorys. Sie pinnt die
aufgelösten Profil-Versionen und Bundle-Hashes: codecharter restore
lädt genau diese Bundles herunter, codecharter verify prüft den lokalen
Cache dagegen und codecharter update schreibt sie neu.
MCP-Server
Die Integration für KI-Assistenten, gestartet mit codecharter mcp.
Stellt CodeCharter-Analyse und Regel-Erstellung als MCP-Tools bereit;
codecharter mcp install registriert den Server in unterstützten
KI-Tools.
Profil
Ein versioniertes, zusammengestelltes Regelset, referenziert in
.codecharter/config.yml als slug@version (zum Beispiel
codecharter/csharp-all@1.0.0). CodeCharter liefert kuratierte
Plattform-Profile unter dem Präfix codecharter/; Kunden können
über das Portal eigene Profile veröffentlichen.
Pin
Die Evidenz, die codecharter req accept bei einer Abnahme in das Criterion
schreibt: Freigeber, Datum und ein Fingerprint der geankerten Coderegion,
bei einem test:-Criterion zusätzlich der Hash der gebundenen Testmethode.
Ändert sich diese Evidenz später, passt der Pin nicht mehr, und das
Requirement rendert als stale.
Requirement
Eine einzelne, beschlossene Zusage über das Produkt, abgelegt als
.req.md-Datei unter .codecharter/req. Trägt eine Id, einen Titel, eine
Priorität, einen Status, eine Art und einen Fließtext-Body, dazu optional
Criteria und Anchors. Siehe
Requirements im Überblick.
Requirement-Corpus
Die Gesamtheit der .req.md-Dateien eines Repositorys, zusammen mit der
optionalen Gliederung in documents.yml. Es gibt keine Datenbank daneben:
der Corpus besteht nur aus Dateien im Repository.
Rollup
Das zusammengefasste Ergebnis eines Requirements über alle seine Criteria
hinweg, nach dem schlechtesten Einzelergebnis gebildet. Der deklarierte
status im Frontmatter fließt bewusst nicht ein, er wird daneben gemeldet.
Rule-Pack
Eine Gruppe verwandter Regeln, ausgeliefert als Verzeichnis von
.ccr-Dateien. CodeCharter kommt mit eingebauten Packs (allgemeine
C#-Regeln, ASP.NET Core, Contracts, unerwünschte Suffixe). Eigene
Packs lassen sich beliebig ergänzen.
SARIF
Static Analysis Results Interchange Format, JSON-basierter Standard für Code-Analyse-Tools. CodeCharter kann SARIF v2.1 ausgeben; das Format wird von GitHub Code Scanning und GitLab SAST nativ konsumiert.
Selector
Der erste Teil einer Regel-Query, der bestimmt, welche Code-Elemente
geprüft werden: from t in Types, from m in Methods und so weiter.
Severity
Schweregrad eines Findings. CodeCharter kennt drei Stufen:
info: Hinweiswarn: Warnungerror: Fehler
Ob ein Finding den Build scheitern lässt, steuert die
--fail-on-Schwelle: ohne sie beendet sich die CLI bei jedem Finding
mit Exit-Code 1, auch bei info. Die GitHub Action nutzt per Default
fail-on: error.
Spec-Test
Hit- und Miss-Testfälle für eine Regel, abgelegt in einer
.spec.md-Datei neben der Regel und ausgeführt mit codecharter test,
das einen CI-tauglichen Exit-Code liefert.
Statement-Level-Facts
Die typisierten Properties an jedem Methoden-, Konstruktor- und
Property-Accessor-Body (Catches, Invocations, MemberAccesses,
Literals, BinaryExpressions, LocalDeclarations), erreichbar über
die abgeflachte AllBodies-Collection. Eine Regel liest diese direkt,
statt eine eigene m.Syntax-Traversierung für ein verbreitetes Pattern
nachzubauen.
Subscription
Die kommerzielle Lizenz für CodeCharter. Steuert, ob Downloads aus dem Portal verfügbar sind. Trial, Starter, Team, Business oder Enterprise. Siehe Plan-Übersicht.
Suppression
Eine bewusste Ausnahme zu einer Regel an einer konkreten Stelle, gesetzt
inline per Kommentar (// codecharter-disable,
// codecharter-disable-next-line). Um eine Regel komplett zu
deaktivieren oder ganze Dateien auszuschließen, dienen stattdessen
Regel-Overrides oder ein ignore-Eintrag in .codecharter/config.yml.
Mehr unter Suppressions.
TimeProvider
Die .NET-8-Abstraktion über die Systemuhr. CodeCharter enthält eine eingebaute
Regel, die direkte DateTime.Now-Aufrufe meldet und empfiehlt, stattdessen
TimeProvider per Konstruktor zu injizieren.
Trial
Der 7-tägige kostenlose Vollzugriff, den jeder neue Account beim Registrieren bekommt. Siehe Registrierung und Trial.
Verdict
Das Ergebnis eines einzelnen Criteriums gegen den aktuellen Code, einer von
fünf Werten: holds, open, unknown, stale oder violated. stale
heißt, dass die einmal abgenommene Evidenz sich geändert hat, und ist damit
ausdrücklich etwas anderes als eine ehrliche Nicht-Antwort (unknown).
VSIX
Die VS-Code-Extension-Datei. Wird über das Portal als Download angeboten und installiert die CodeCharter-Extension im Editor.