Add Features & Nutzung

kuro 2026-10-10 00:12:07 +00:00
parent fd1da70a2f
commit 5b739424e4
1 changed files with 57 additions and 0 deletions

57
Features-%26-Nutzung.md Normal file

@ -0,0 +1,57 @@
# ✨ 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 eines `if`, `elif` oder `where` Blocks 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 wie `pattern`, `definitions` oder `body` korrekt mit `end ...;` geschlossen wurden.
* **TPL-Struktur:** Überprüft die zwingende Reihenfolge (z.B. `metadata` muss vor `pattern` kommen) und warnt, wenn im `metadata`-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.toText` aus 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 mit `Tab` elegant 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 von `string_utils.` automatisch alle dort definierten `define`-Methoden vor!
* **Lokale Variablen & Namespaces:** Alle Variablen, die du mit `:=` deklarierst, merkt sich das Plugin. Ebenso werden lokale `definitions`-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 (wie `discovery.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.