Add Features & Nutzung
parent
fd1da70a2f
commit
5b739424e4
|
|
@ -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.
|
||||||
Loading…
Reference in New Issue