✨ Features & Nutzung
Die BMC TPL Code All around Extension bringt Funktionen in VS Code, die man sonst nur aus voll integrierten IDEs für Sprachen wie C# oder Java kennt. Hier ist ein detaillierter Überblick, was das Plugin alles unter der Haube hat und wie du es bedienst.
🤖 Der intelligente Linter (Stateful Analysis)
Der Linter läuft komplett im Hintergrund und analysiert deinen Code bei jedem Tastendruck in Echtzeit. Er liest den Code kontextbezogen und "merkt" sich, in welchem Block du dich gerade befindest.
Was der Linter prüft:
- Zuweisungen vs. Vergleiche: In TPL ist
=ein Vergleich und:=eine Zuweisung. Der Linter wirft einen Fehler, wenn du=für eine Zuweisung nutzt. Aber: Er ist schlau genug, ein=innerhalb einesif,elifoderwhereBlocks korrekt als Vergleich zu tolerieren! - Semikolon-Check: Erkennt fehlende Semikolons am Ende von Anweisungen. Auch hier gibt es Ausnahmen: In
enumeration-Blöcken, offenen Bedingungen oder bei mehrzeiligen logischen Operationen (and,or) bleibt der Linter ruhig. - Block- & Klammer-Tracking: Warnt sofort bei ungeschlossenen runden
(oder eckigen[Klammern und prüft, ob Blöcke wiepattern,definitionsoderbodykorrekt mitend ...;geschlossen wurden. - TPL-Struktur: Überprüft die zwingende Reihenfolge (z.B.
metadatamuss vorpatternkommen) und warnt, wenn immetadata-Block Pflichtfelder (origin,author,products,publishers,tree_path) fehlen. - Versions-Prüfung: Weist dich darauf hin, wenn du an einem Modul arbeitest, dessen TPL-Version älter ist als die in deinen VS Code Settings definierte Zielversion.
💡 IntelliSense & smarte Autovervollständigung
Das Plugin bietet dir immer genau das an, was an der aktuellen Stelle sinnvoll ist (ausgelöst automatisch beim Tippen oder manuell per Ctrl + Space).
Die Highlights:
- BMC Built-In Funktionen: Wenn du z.B.
discovery.tippst, erhältst du alle nativen TPL-Methoden dieses Namespaces. - Parameter-Überladungen (Method Overloading): Viele BMC-Funktionen haben optionale Parameter. Wählst du z.B.
number.toTextaus der Liste, kannst du entscheiden, ob du nur die Zahl, oder auch Basis und Breite mitgeben willst. Das gewählte Snippet wird eingefügt und du kannst mitTabelegant von Parameter zu Parameter springen. - Projektübergreifendes Scannen: Importierst du ein fremdes Modul (
from my.company.helpers import string_utils;), durchsucht das Plugin dein gesamtes Workspace nach dieser Datei und schlägt dir nach der Eingabe vonstring_utils.automatisch alle dort definiertendefine-Methoden vor! - Lokale Variablen & Namespaces: Alle Variablen, die du mit
:=deklarierst, merkt sich das Plugin. Ebenso werden lokaledefinitions-Blöcke sofort im Autocomplete angeboten.
🔍 Hover-Dokumentation (Tooltips)
Fahre einfach mit der Maus über einen Methodennamen, ein Pattern oder eine Tabelle, um sofortige Erklärungen zu erhalten.
- Nativer BMC-Support: Alle offiziellen globalen Funktionen (wie
size,datatype) und Namespace-Methoden (wiediscovery.runCommand) sind hinterlegt. Du siehst sofort die originale, mehrzeilige BMC-Dokumentation inklusive Parameter-Beschreibung im schicken Markdown-Format. - Eigene DocStrings: Wenn du über einem selbst geschriebenen Pattern oder einer
define-Methode hoverst, zieht sich das Plugin deinen Multi-Line-Kommentar ("""oder'''), der direkt unter der Deklaration steht, und zeigt ihn als sauberen Tooltip an. Das funktioniert auch für importierte Module!
🎨 Auto-Formatter (Visual Alignment)
Schluss mit chaotischen Einrückungen. Du kannst deinen Code jederzeit per Rechtsklick -> Dokument formatieren (oder Shift + Alt + F) aufräumen lassen.
- Feste Standards: Der Formatter erzwingt konsistent 4 Leerzeichen pro Einrückungs-Ebene.
- Dynamische Block-Einrückung: Der Code "atmet" mit. Öffnende Blöcke (
if,for,pattern,table) rücken den Code ein, schließende (end if;) nehmen die Einrückung wieder zurück. - Klammer-Gedächtnis: Bei mehrzeiligen Arrays oder Funktionsaufrufen merkt sich der Formatter die spaltengenaue Position der öffnenden Klammer
[oder(und richtet alle folgenden Parameter exakt vertikal daran aus.
⚡ Quick Fixes (Code Actions / Glühbirne)
Wenn der Linter einen Fehler oder eine Warnung ankreidet, erscheint am Anfang der Zeile oft eine Glühbirne (oder drücke Ctrl + .). Darüber kannst du Probleme mit einem Klick lösen:
- Fehlende Metadaten generieren: Füllt sofort alle fehlenden Felder in einem unvollständigen
metadata-Block auf. - Log-Statement einfügen: Platziert das obligatorische
log.debug("Start pattern...");direkt am Anfang des Bodies, falls du es vergessen hast. - Tabs zu Spaces: Wandelt illegale Tabulator-Zeichen in der beanstandeten Zeile sofort in 4 saubere Leerzeichen um.