Skip to content

codecharter validate

Eine einzelne .ccr-Regeldatei auf Syntaxfehler prüfen und ihre Metadaten ausgeben.

codecharter validate <file> [--license <path>]

<file> ist der Pfad zu einer einzelnen .ccr-Datei. Der Befehl parst die Direktiven und die Query-Syntax der Datei und gibt die Regel-Metadaten aus, wenn das Parsen erfolgreich ist. Er prüft nicht, ob die in der Query verwendeten Properties existieren oder wie sich die Regel auf echtem Code verhält; verwenden Sie dafür codecharter test, um eine Regel gegen ihre Hit/Miss-Spec-Fälle zu verifizieren.

Wie jeder CLI-Befehl benötigt validate eine gültige Lizenz. Geben Sie die Lizenzdatei mit --license <path> oder über die Umgebungsvariable CODECHARTER_LICENSE an; siehe Lizenzdatei.

Beispiel

codecharter validate .codecharter/rules/repository-naming.ccr

Ausgabe bei Erfolg:

Rule 'Repository class must end in Repository' parsed successfully
  Severity: Error
  Category: Naming
  Description: Repositories must have a 'Repository' suffix for discoverability

Fehlende Direktiven erhalten in den ausgegebenen Metadaten Standardwerte: ohne @name wird der Dateiname verwendet, ohne @severity gilt warn (nicht erkannte Severity-Werte werden ebenfalls als warn behandelt), und ohne @category gilt General.

Bei einem Fehler wird eine Meldung in dieser Form auf stderr ausgegeben:

Validation failed: Parse error: ...

Exit-Codes

  • 0: Die Datei wurde erfolgreich geparst.
  • 2: Die Datei konnte nicht geparst oder validiert werden; prüfen Sie stderr auf Validation failed:.
  • 6: Lizenzfehler (fehlend, abgelaufen oder für diese CLI-Version nicht gültig).

Empfohlene Verwendung

Als Pre-Commit-Hook für Regeldateien

#!/bin/sh
for file in $(git diff --cached --name-only --diff-filter=ACMR | grep '\.ccr$'); do
    if codecharter validate "$file" 2>&1 | grep -q 'Validation failed'; then
        echo "Invalid rule file: $file"
        exit 1
    fi
done

Der Hook prüft die Ausgabe auf Validation failed: statt auf den Exit-Code. So fangen Sie Syntaxfehler in .ccr-Dateien ab, bevor der CI-Lauf sie sieht.