bmc-tpl-code-all-around/README.md

5.2 KiB

BMC TPL Code All-Around

Linter, Auto-Formatter, IntelliSense und Hover-Dokumentationen für die BMC TPL (Template Language).[cite: 3]

Diese Visual Studio Code Erweiterung verwandelt deinen Editor in eine vollwertige Entwicklungsumgebung für BMC Discovery TPL-Skripte. Sie nimmt dir Tipparbeit ab, formatiert Code nach strengen Best Practices, verhindert Syntax-Fehler noch vor dem Deployment und versteht projektübergreifende Abhängigkeiten.


✨ Features

🤖 Intelligenter Linter (Syntax-Scanner)

Der Linter analysiert den Code in Echtzeit und warnt vor typischen TPL-Fehlern:

  • Strikte Hierarchie-Prüfung: Überwacht die korrekte Reihenfolge der Blöcke innerhalb von Patterns und Syncmappings (metadata -> overview -> constants -> triggers -> mapping/removal -> body).
  • Semicolon- & Zuweisungs-Check: Findet fehlende Semikolons (ignoriert sie aber intelligent in enumeration-Blöcken) und warnt, wenn = anstelle von := für Zuweisungen genutzt wird.
  • Block- & Klammer-Tracking: Erkennt nicht geschlossene Blöcke (wie fehlende end body; oder end pattern;) und findet ungeschlossene runde ( oder eckige [ Klammern.
  • Pflichtfeld-Validierung: Prüft, ob auf Modul-Ebene zwingend benötigte Metadaten (origin, author, products, publishers, tree_path) vorhanden sind und ob im body ein initiales log.debug Statement steht.
  • Toleranz-Modus: Erkennt automatisch TPL-Versionen (z.B. > 1.23) und stuft in neueren Versionen Fehler zu reinen Warnungen herab, um zukünftige Kompatibilität zu gewährleisten.

🎨 Auto-Formatter & Visual Alignment (Shift + Alt + F)

Schluss mit kaputten Einrückungen! Der Formatter bringt deinen Code in Bestform:

  • VS Code Standard: Erzwingt strikt 4 Leerzeichen pro Einrückungs-Ebene.
  • Dynamische Block-Einrückung: Erkennt automatisch startende und endende Blöcke (if, for, pattern, table etc.) und passt die Einrückungsebene an.
  • Klammer-Gedächtnis (Visual Alignment): Die Königsdisziplin! Der Formatter merkt sich die spaltengenaue Position von geöffneten Arrays [ oder Funktionsaufrufen ( und richtet alle Folgezeilen makellos an dieser Klammer aus. Schließende Klammern werden auf Wunsch perfekt darunter platziert.

💡 IntelliSense & Autovervollständigung (Cross-File)

Spart extrem viel Zeit beim Coden durch Kontext-Wissen:

  • Workspace-Scanning: Importierst du ein Modul (z.B. from company.helpers import my_helper), durchsucht das Plugin im Hintergrund dein gesamtes Projekt. Tippst du my_helper., werden dir automatisch alle verfügbaren define-Methoden aus der fremden Datei vorgeschlagen!
  • Lokale Namespaces: Erkennt definitions-Blöcke in der gleichen Datei und schlägt deren Methoden vor.
  • Variablen-Tracking: Lernt alle Variablen, die du mit := definiert hast, und schlägt sie dir später vor.
  • Log-Filter: Nach dem Tippen von log. zeigt VS Code strikt nur noch die validen Methoden (debug, info, warn, error) an.

🔍 Hover-Dokumentation (Tooltips)

Wenn du mit der Maus über einem Methodennamen, einem Pattern oder einer Tabelle stehen bleibst:

  • DocString Extraction: Das Plugin liest Multi-Line-Kommentare (""" oder '''), die direkt unter einer define oder pattern Deklaration stehen, aus und rendert sie als saubere Markdown-Tooltips.
  • Projektübergreifend: Funktioniert auch für Methoden aus importierten Dateien! Du musst die aktuelle Datei nicht mehr verlassen, um zu sehen, was eine Hilfsfunktion macht.

⚡ Quick Fixes (Code Actions / Glühbirne)

Bietet sofortige Reparaturoptionen mit einem Klick:

  • "Fehlende Modul-Metadaten einfügen": Generiert sofort alle 5 Pflichtfelder im Modul-Metadata-Block.
  • "Log-Statement einfügen": Baut das fehlende log.debug("Start pattern..."); direkt am Anfang des body-Blocks ein.
  • "Tabs zu Spaces": Ersetzt sofort alle illegalen Tabs (\t) in einer Zeile durch jeweils 4 korrekte Leerzeichen.

🚀 Snippets (Code-Vorlagen)

Einfach das Keyword tippen und Enter drücken, um komplette, perfekt eingerückte Blöcke zu generieren:

Keyword Beschreibung
tpl_skeleton God-Snippet: Generiert eine komplett frische .tpl Datei inklusive Modul-Definition, Pflicht-Metadaten, Pattern, Triggern und Log-Statements.
pattern Baut einen leeren Pattern-Block inklusive DocString und end pattern;.
syncmapping Baut einen leeren Syncmapping-Block inklusive DocString.
define Generiert eine Methodendefinition (define name(params) ... end define;).
metadata, overview, body... Baut den jeweiligen Block auf und platziert den Cursor in der Mitte.
table Erstellt eine Tabelle inklusive des default -> "unknown"; Fallbacks.
if, for Baut Standard-Schleifen und Abfragen.

🛠️ Installation & Nutzung

  1. Das Plugin aktivieren.
  2. TPL-Dateien (Endung .tpl) öffnen.
  3. Der Linter startet automatisch bei jedem Tastendruck.
  4. Formatieren: Rechtsklick -> Dokument formatieren (oder Shift + Alt + F).
  5. Autovervollständigung: Triggert automatisch beim Tippen, speziell nach einem Punkt (.) bei Modul-Aufrufen.
  6. Quick Fixes: Auf die gelbe/rote Glühbirne am Zeilenanfang klicken oder Ctrl + . (Windows/Linux) / Cmd + . (Mac) drücken.