Dieser Post setzt den achten Teil fort.
bausteinsicht validate und bausteinsicht lint prüfen das Modell auf der Kommandozeile.
Noch besser: Fehler direkt im Editor sehen — beim Tippen, ohne den Terminal zu verlassen.
Das ermöglicht das Language Server Protocol.
Was ist LSP?
Das Language Server Protocol (LSP) ist ein offener Standard von Microsoft. Ein Language Server läuft im Hintergrund und analysiert Quellcode (oder Konfigurationsdateien) — der Editor fragt ihn ab und zeigt die Ergebnisse an:
Rote Unterstreichungen bei Fehlern
Autovervollständigung für bekannte Werte
Hover-Informationen
CodeLens (kleine Infos über Zeilen)
Weil LSP ein Standard ist, funktioniert bausteinsicht-lsp mit jedem LSP-fähigen Editor: VS Code, Neovim, Emacs, Zed, IntelliJ.
bausteinsicht-lsp installieren
bausteinsicht-lsp ist ein separates Binary — es läuft als Hintergrundprozess, den der Editor startet:
# Via Go Install
go install github.com/docToolchain/Bausteinsicht/cmd/bausteinsicht-lsp@latest
# Via Release-Binary (Linux amd64)
curl -Lo bausteinsicht-lsp \
https://github.com/docToolchain/Bausteinsicht/releases/latest/download/bausteinsicht-lsp_linux_amd64
chmod +x bausteinsicht-lsp && sudo mv bausteinsicht-lsp /usr/local/bin/VS Code Einrichtung
Option A: VS Code Extension (empfohlen)
Die offizielle Bausteinsicht VS Code Extension installiert und konfiguriert den LSP automatisch:
Extensions-Panel öffnen (
Ctrl+Shift+X)Nach „Bausteinsicht" suchen
Extension installieren
Die Extension aktiviert sich automatisch sobald eine *.jsonc-Datei geöffnet wird, die architecture im Dateinamen enthält.
Option B: Manuelle Konfiguration
Für andere Editoren oder manuelle Kontrolle: bausteinsicht-lsp über die LSP-Konfiguration des Editors registrieren.
VS Code settings.json:
{
"languageServerExample.maxNumberOfProblems": 100,
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}Oder via vscode-languageclient in einer Extension:
{
"command": "bausteinsicht-lsp",
"args": ["--stdio"],
"filenamePattern": "*architecture*.jsonc"
}Was der LSP bietet
Inline-Validierung
Der LSP ruft bausteinsicht validate --format json im Hintergrund auf und zeigt Fehler direkt als rote Unterstreichung im Editor:
"frontend": {
"kind": "container",
"children": { ... } ← ⚠ Error: kind 'container' has container:false in specification
}Fehlermeldungen erscheinen beim Hover über der markierten Stelle — ohne Terminal öffnen.
Severity-Stufen:
* Error (rot): Strukturfehler, die validate blockieren
* Warning (gelb): Warnungen aus lint (Constraint-Verstöße)
* Info (blau): Hinweise (z.B. Element nicht in einer View sichtbar)
* Hint (grau): Stil-Empfehlungen
CodeLens: Inline-Metadaten
Über jeder Element-Definition zeigt der LSP eine CodeLens-Zeile mit Metadaten:
"api": {
"kind": "container",
"title": "REST API",
"status": "deployed"
}Die CodeLens zeigt:
* Element-Typ (kind)
* Lifecycle-Status (status, wenn gesetzt)
* Anzahl der Views, in denen das Element erscheint
Ein Klick auf die CodeLens öffnet das draw.io-Diagramm an der entsprechenden Stelle.
Validierung beim Speichern
Jedes Mal wenn architecture.jsonc gespeichert wird, laufen validate und lint automatisch im Hintergrund.
Verstöße erscheinen sofort im Problems-Panel von VS Code — kein manuelles bausteinsicht lint nötig.
JSON Schema: Die schlanke Alternative
Ohne LSP-Setup funktioniert Autovervollständigung auch über JSON Schema. VS Code unterstützt das nativ.
Den $schema-Eintrag in architecture.jsonc setzen (→ Teil 3):
{
"$schema": "https://raw.githubusercontent.com/docToolchain/Bausteinsicht/main/schemas/bausteinsicht.schema.json",
...
}Das gibt sofort:
Autovervollständigung für alle bekannten Felder (
kind,title,technology, etc.)Typ-Validierung (z.B.
containermuss ein Boolean sein)Hover-Dokumentation für alle Felder
JSON Schema prüft nur die Struktur, nicht die inhaltliche Konsistenz (z.B. ob ein kind-Wert in specification.elements definiert ist). Dafür ist der LSP zuständig. |
Lokales Schema (ohne Internetverbindung)
# Schema herunterladen
curl -Lo schemas/bausteinsicht.schema.json \
https://raw.githubusercontent.com/docToolchain/Bausteinsicht/main/schemas/bausteinsicht.schema.json
# In architecture.jsonc referenzieren
# "$schema": "./schemas/bausteinsicht.schema.json"LSP vs. JSON Schema: Wann was?
| Feature | JSON Schema | bausteinsicht-lsp |
|---|---|---|
Felddokumentation beim Hover | ✅ | ✅ |
Autovervollständigung (bekannte Felder) | ✅ | ✅ |
Typ-Validierung | ✅ | ✅ |
Constraint-Prüfung (lint) | ✗ | ✅ |
Modell-Konsistenz (validate) | ✗ | ✅ |
CodeLens (kind/status/views) | ✗ | ✅ |
Setup-Aufwand | Minimal (1 Zeile) | Gering (Binary installieren) |
Funktioniert offline | ✗ (Remote-URL) / ✅ (lokal) | ✅ |
Für die meisten Projekte reicht JSON Schema.
bausteinsicht-lsp lohnt sich wenn man regelmäßig mit dem Modell arbeitet und Constraint-Feedback sofort im Editor haben möchte.
Beispiel-Modell
Das Beispiel für diesen Teil (Elemente mit status-Feld für LSP-CodeLens) liegt unter teil_9.jsonc.
So sieht das Ergebnis in draw.io aus (bausteinsicht sync):
Das draw.io-File dafür findest du hier: teil_9.drawio
Generierte PNG-Dateien via bausteinsicht export --image-format png:


Generierte PlantUML-Diagramme via bausteinsicht export-diagram:
Was als nächstes kommt
Teil 10: Graph-Analyse — Zyklen und Abhängigkeiten aufdecken
Teil 11: ADR-Integration — Architecture Decision Records mit dem Modell verknüpfen
Offizielle Dokumentation: User Manual · Tutorial auf doctoolchain.org