Zum Inhalt springen

VS-Code-Extension für die CodeCharter-Regel-DSL

Editor-Support für die CodeCharter-DSL mit Syntax-Highlighting und Autovervollständigung.

Die VS-Code-Extension bringt vollwertigen Editor-Support für die CodeCharter-DSL mit. Wenn Sie eigene .ccr-Regeln schreiben, erhalten Sie Syntax-Highlighting, Snippets und Autovervollständigung der Schema-Properties.

Installation

Die Extension setzt VS Code 1.85 oder neuer voraus. Für den Download aus dem Portal benötigen Sie ein angemeldetes Konto mit aktivem Abo.

  1. Laden Sie codecharter-X.Y.Z.vsix aus den Portal-Downloads herunter.
  2. In VS Code: Kommandopalette → "Extensions: Install from VSIX..." → die heruntergeladene Datei auswählen.

Hinweis: VS Code zeigt bei der VSIX-Installation einen Sicherheitshinweis zu einem nicht verifizierten Publisher. Das ist erwartet, da die Extension nicht über den Marketplace kommt. Bestätigen Sie den Hinweis und fahren Sie fort.

Alternativ per CLI:

code --install-extension codecharter-X.Y.Z.vsix

Der Windows-Installer bietet das als vorausgewählte Setup-Option an, wenn er eine VS-Code-Installation erkennt.

Die Extension benötigt die CodeCharter-CLI für alle Sprachfeatures: Der Language Server wird von der CLI selbst bereitgestellt. Wird keine CLI gefunden, zeigt die Extension beim Aktivieren einen Fehler, und Autovervollständigung und Validierung funktionieren nicht. Die CLI wird automatisch im PATH gesucht (ausführbare Dateien codecharter, CodeCharter.Cli oder CodeCharter.Cli.exe) oder über codecharter.serverPath konfiguriert.

Features

  • Syntax-Highlighting für .ccr-Files mit eigenem Tokenizer.
  • Snippets für die typischen Regel-Skelette.
  • Autovervollständigung der Schema-Properties (TypeModel, MethodModel und Co.) über einen Language Server, den die CodeCharter-CLI bereitstellt.
  • Inline-Validierung der Regel-Syntax. Tippfehler in Property-Namen markiert der Editor sofort.
  • Spec-Tests mit CodeLens-Aktionen: "Run spec" und "Scaffold spec" erscheinen auf .ccr- und .spec.md-Dateien; fehlgeschlagene Fälle landen im Problems-Panel.

Wenn Ihre codecharter.yml Portal-Profile deklariert, führt die Extension beim Aktivieren codecharter restore aus, zeigt das aktive Regel-Set in der Statusleiste an und warnt, wenn codecharter.lock.json neuer ist als der Regel-Cache.

Die Extension nimmt außerdem Regel-Entwürfe aus dem Portal entgegen: In VSCode öffnen im Regel-Editor des Portals holt den aktuellen Entwurf nach VS Code, und CodeCharter: Push to portal spielt ihn als Entwurf zurück. Den vollständigen Ablauf beschreibt Regeln in VS Code bearbeiten.

Befehle in der Kommandopalette

  • CodeCharter: Validate current rule file
  • CodeCharter: Analyze workspace (.sln/.csproj)
  • CodeCharter: Test rule spec
  • CodeCharter: Test all specs
  • CodeCharter: Scaffold spec for current rule
  • CodeCharter: Restart language server
  • CodeCharter: Show language server output

Analyze workspace startet die CodeCharter-CLI auf der Solution oder dem Projekt im VS Code Terminal. Die Findings erscheinen dort als Konsolen-Output.

Konfiguration

Settings unter codecharter.* in den VS Code Einstellungen:

Setting Default Beschreibung
codecharter.serverPath leer Pfad zur CodeCharter-CLI. Leer = automatische Erkennung aus dem PATH. Unterstützt ${workspaceFolder} und ${userHome}.
codecharter.analyze.rulesDirectory leer Regel-Verzeichnis für Analyze workspace. Leer = Standardauflösung der CLI: ./rules im Workspace, sonst das mit der CLI ausgelieferte Regel-Set.
codecharter.trace.server off LSP-Kommunikation protokollieren (off, messages, verbose).
codecharter.portalBaseUrl https://codecharter.tools Portal-Adresse für die Entwurfs-Übergabe, siehe Regeln in VS Code bearbeiten.

Andere Editoren

Der Language Server ist nicht an VS Code gebunden. Der CLI-Befehl

codecharter lsp

startet den CodeCharter-DSL-Language-Server, der das Language Server Protocol über stdio (stdin/stdout) spricht. Jeder LSP-fähige Editor kann ihn an .ccr-Dateien anbinden: Konfigurieren Sie Ihren Editor so, dass er codecharter lsp als stdio-Language-Server für die Dateiendung .ccr startet. Wie ein stdio-Server eingebunden wird, beschreibt die LSP-Dokumentation Ihres Editors.

Der Server bietet:

  • Diagnostics, veröffentlicht beim Öffnen und bei jeder Änderung einer Datei.
  • Completion für Schema-Properties, ausgelöst durch @, . und Leerzeichen.
  • Hover-Informationen.
  • Semantic Tokens (gesamtes Dokument) für Syntax-Highlighting.
  • Code Actions zu gemeldeten Diagnostics.

Die Dokumentsynchronisation arbeitet mit dem vollständigen Dokumentinhalt. Wie jeder CLI-Befehl führt codecharter lsp beim Start die Lizenzprüfung aus und akzeptiert --license, um auf eine bestimmte codecharter.license-Datei zu zeigen.

Beachten Sie, dass die oben beschriebenen VS-Code-spezifischen Features (Snippets, CodeLens-Spec-Aktionen, codecharter restore beim Aktivieren, Statusleiste) aus der Extension stammen, nicht aus dem Language Server. In anderen Editoren stehen Ihnen die oben aufgeführten Fähigkeiten des Language Servers zur Verfügung.

.codecharter/config.yml bearbeiten

In .codecharter/config.yml konfigurieren Sie Profile, Regel-Parameter, Overrides, Ignore-Einträge und Analyse-Scopes: die Datei, die jeder CodeCharter-Nutzer bearbeitet, und in der ein vertippter Regel-Slug oder Parametername sonst stillschweigend nichts bewirkt statt einen Fehler zu werfen. Es gibt zwei unabhängige Wege, dafür Editor-Support zu bekommen, getrennt vom DSL-Support oben:

Ein Language Server, gestartet mit:

codecharter config-lsp

Wie codecharter lsp spricht dieser Server das Language Server Protocol über stdio; binden Sie ihn in jedem LSP-fähigen Editor als Server für config.yml-Dateien unter .codecharter/ ein. Er bietet:

  • Diagnostics bei jeder Änderung, aus demselben Parser, den auch die CLI zum Laden der Datei verwendet: Strukturfehler werden schon beim Tippen markiert, nicht erst beim nächsten codecharter analyze.
  • Completion für Top-Level- und Scope-Keys, ignore-/include-Eintrags- Keys, coverage-Keys und severity-Werte.
  • Rule-Slug-Completion nach rule: und unter overrides:, aus einem rules/-Verzeichnis neben .codecharter/, sofern Ihr Repository eines hat. In einem Workspace, der nur auf Portal-Profile setzt, entfällt die Slug-Completion, statt zu raten.
  • Hover-Text mit einer Beschreibung zu jedem Key.

Ein JSON Schema, für Editoren, die schema-basierte YAML-Unterstützung bevorzugen (zum Beispiel die YAML-Extension von VS Code über deren Setting yaml.schemas) statt einen zweiten Language Server laufen zu lassen. Sie erzeugen es mit:

codecharter config schema --out codecharter.schema.json

Was codecharter config schema abdeckt und welche weiteren codecharter config-Unterbefehle es gibt, steht unter Konfigurationsdatei. Wählen Sie, was zu Ihrem Editor passt: config-lsp liefert Live-Diagnostics und Rule-Slug-Completion beim Tippen; der JSON-Schema-Weg braucht keinen laufenden Prozess, kennt dafür aber die Regel-Slugs Ihres Repositorys nicht.

Troubleshooting

Wenn der Language Server nicht startet:

  1. Output-Panel öffnen (View → Output), CodeCharter im Dropdown wählen.
  2. CLI-Pfad prüfen. Wenn die CLI nicht im PATH ist, setzen Sie codecharter.serverPath explizit auf den vollen Pfad.
  3. Rechte prüfen auf Linux und macOS. Das Binary muss ausführbar sein (chmod +x codecharter).
  4. LSP-Tracing aktivieren für detaillierte Diagnose: codecharter.trace.server auf messages oder verbose setzen. Nach der Diagnose wieder auf off zurück.

Mehr unter VS-Code-Extension hängt.