Zum Inhalt springen

Glossar der Begriffe aus CodeCharter-Wiki und CLI

Alle Begriffe aus dem Wiki, der CLI-Ausgabe und dem Portal, kurz erklärt.

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: Hinweis
  • warn: Warnung
  • error: 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.