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;oderend 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 imbodyein initialeslog.debugStatement 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,tableetc.) 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 dumy_helper., werden dir automatisch alle verfügbarendefine-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 einerdefineoderpatternDeklaration 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 desbody-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
- Das Plugin aktivieren.
- TPL-Dateien (Endung
.tpl) öffnen. - Der Linter startet automatisch bei jedem Tastendruck.
- Formatieren: Rechtsklick -> Dokument formatieren (oder
Shift + Alt + F). - Autovervollständigung: Triggert automatisch beim Tippen, speziell nach einem Punkt (
.) bei Modul-Aufrufen. - Quick Fixes: Auf die gelbe/rote Glühbirne am Zeilenanfang klicken oder
Ctrl + .(Windows/Linux) /Cmd + .(Mac) drücken.