Linter
Wippy enthalt einen integrierten Linter, der Typprufung und statische Analyse von Lua-Code durchfuhrt. Er wird mit wippy lint ausgefuhrt.
Verwendung
Abschnitt betitelt „Verwendung“wippy lint # Check all Lua entrieswippy lint --level hint # Show all diagnostics including hintswippy lint --json # Output in JSON formatwippy lint --ns app # Check only the app namespacewippy lint --summary # Group results by error codeWas gepruft wird
Abschnitt betitelt „Was gepruft wird“Der Linter validiert alle Lua-Eintragsarten:
function.lua- Funktionenlibrary.lua- Bibliothekenprocess.lua- Prozesseworkflow.lua- Workflows
Ihre vorkompilierten .bc-Varianten (function.lua.bc, library.lua.bc, process.lua.bc, workflow.lua.bc) werden ebenfalls gelintet.
Jeder Eintrag wird geparst, typgepruft und auf Korrektheitsprobleme analysiert.
Schweregrade
Abschnitt betitelt „Schweregrade“Diagnosen haben drei Schweregrade:
| Stufe | Beschreibung |
|---|---|
error | Typfehler und Korrektheitsprobleme, die behoben werden mussen |
warning | Wahrscheinliche Fehler oder problematische Muster |
hint | Stilvorschlage und informative Hinweise |
Steuern Sie die angezeigten Stufen mit --level:
wippy lint --level error # Errors onlywippy lint --level warning # Warnings and errors (default)wippy lint --level hint # EverythingFehlercodes
Abschnitt betitelt „Fehlercodes“Parse-Fehler
Abschnitt betitelt „Parse-Fehler“| Code | Beschreibung |
|---|---|
P0001 | Lua-Syntaxfehler - Quellcode kann nicht geparst werden |
Typprufungsfehler (E-Serie)
Abschnitt betitelt „Typprufungsfehler (E-Serie)“Typprufungsfehler (E0001+) melden Probleme, die vom Typsystem erkannt werden: Typkonflikte, undefinierte Variablen, ungultige Operationen und ahnliche Korrektheitsprobleme. Diese werden immer als Fehler gemeldet.
local x: number = "hello" -- E: string not assignable to number
local function add(a: number, b: number): number return a + bend
add("one", "two") -- E: string not assignable to numberLint-Regel-Warnungen (W-Serie)
Abschnitt betitelt „Lint-Regel-Warnungen (W-Serie)“Lint-Regeln bieten Stil- und Qualitatsprufungen. Aktivieren Sie sie mit --rules:
wippy lint --rules| Code | Regel | Beschreibung |
|---|---|---|
W0001 | no-empty-blocks | Leere Blockanweisungen |
W0002 | no-global-assign | Zuweisung an globale Variablen |
W0003 | no-self-compare | Vergleich eines Wertes mit sich selbst |
W0004 | no-unused-vars | Unbenutzte lokale Variablen |
W0005 | no-unused-params | Unbenutzte Funktionsparameter |
W0006 | no-unused-imports | Unbenutzte Import-Anweisungen |
W0007 | no-shadowed-vars | Variable uberschattet ausseren Gultigkeitsbereich |
Ohne --rules wird nur die Typprufung (P- und E-Codes) durchgefuhrt.
Filterung
Abschnitt betitelt „Filterung“Nach Namespace
Abschnitt betitelt „Nach Namespace“Prufen Sie bestimmte Namespaces mit --ns:
wippy lint --ns app # Exact namespace matchwippy lint --ns "app.*" # All under appwippy lint --ns app --ns lib # Multiple namespacesAbhangigkeiten der ausgewahlten Eintrage werden fur die Typprufung geladen, aber ihre Diagnosen werden nicht angezeigt.
Nach Fehlercode
Abschnitt betitelt „Nach Fehlercode“Filtern Sie Diagnosen nach Code:
wippy lint --code E0001wippy lint --code E0001 --code E0004Nach Anzahl
Abschnitt betitelt „Nach Anzahl“Begrenzen Sie die Anzahl der angezeigten Diagnosen:
wippy lint --limit 10 # Show first 10 issuesAusgabeformate
Abschnitt betitelt „Ausgabeformate“Tabellenformat (Standard)
Abschnitt betitelt „Tabellenformat (Standard)“Jede Diagnose wird mit Quellkontext, Dateispeicherort und Fehlermeldung angezeigt. Ergebnisse sind nach Eintrag, Schweregrad und Zeilennummer sortiert.
Eine Zusammenfassungszeile zeigt die Gesamtzahlen:
Checked 42 entries: 5 errors, 12 warningsZusammenfassungsformat
Abschnitt betitelt „Zusammenfassungsformat“Diagnosen nach Namespace und Fehlercode gruppieren:
wippy lint --summaryBy namespace:
app 15 issues (5 errors, 10 warnings) lib 2 issues (2 warnings)
By error code:
E0001 [error ] 5 occurrences E0004 [error ] 3 occurrences
Checked 42 entries: 5 errors, 12 warningsJSON-Format
Abschnitt betitelt „JSON-Format“Maschinenlesbare Ausgabe fur CI/CD-Integration:
wippy lint --json{ "diagnostics": [ { "entry_id": "app:handler", "code": "E0001", "severity": "error", "message": "string not assignable to number", "line": 10, "column": 5 } ], "total_entries": 42, "error_count": 5, "warning_count": 12, "hint_count": 0}Caching
Abschnitt betitelt „Caching“Der Linter speichert Ergebnisse im Cache, um wiederholte Durchlaufe zu beschleunigen. Cache-Schlussel basieren auf Quellcode-Hash, Methodenname, Abhangigkeiten und Typsystem-Konfiguration.
Leeren Sie den Cache, wenn Ergebnisse veraltet erscheinen:
wippy lint --cache-resetCI/CD-Integration
Abschnitt betitelt „CI/CD-Integration“Verwenden Sie JSON-Ausgabe und Exit-Codes fur automatisierte Prufungen:
wippy lint --json --level error > lint-results.jsonDer Linter beendet sich mit Code 0, wenn keine Fehler gefunden werden, andernfalls mit einem Wert ungleich null.
Beispiel fur einen GitHub-Actions-Schritt:
- name: Lint run: wippy lint --level warningFlags-Referenz
Abschnitt betitelt „Flags-Referenz“| Flag | Kurz | Standard | Beschreibung |
|---|---|---|---|
--level | warning | Minimaler Schweregrad (error, warning, hint) | |
--json | false | Ausgabe im JSON-Format | |
--ns | Nach Namespace-Mustern filtern | ||
--code | Nach Fehlercodes filtern | ||
--limit | 0 | Maximale Anzahl angezeigter Diagnosen (0 = unbegrenzt) | |
--summary | false | Nach Fehlercode gruppieren | |
--no-color | false | Farbige Ausgabe deaktivieren | |
--rules | false | Lint-Regeln aktivieren (W-Serie Stil-/Qualitatsprufungen) | |
--cache-reset | false | Cache vor dem Linting leeren | |
--lock-file | -l | wippy.lock | Pfad zur Lock-Datei |