Zum Inhalt springen

Linter

Wippy enthalt einen integrierten Linter, der Typprufung und statische Analyse von Lua-Code durchfuhrt. Er wird mit wippy lint ausgefuhrt.

Terminal-Fenster
wippy lint # Check all Lua entries
wippy lint --level hint # Show all diagnostics including hints
wippy lint --json # Output in JSON format
wippy lint --ns app # Check only the app namespace
wippy lint --summary # Group results by error code

Der Linter validiert alle Lua-Eintragsarten:

  • function.lua - Funktionen
  • library.lua - Bibliotheken
  • process.lua - Prozesse
  • workflow.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.

Diagnosen haben drei Schweregrade:

StufeBeschreibung
errorTypfehler und Korrektheitsprobleme, die behoben werden mussen
warningWahrscheinliche Fehler oder problematische Muster
hintStilvorschlage und informative Hinweise

Steuern Sie die angezeigten Stufen mit --level:

Terminal-Fenster
wippy lint --level error # Errors only
wippy lint --level warning # Warnings and errors (default)
wippy lint --level hint # Everything
CodeBeschreibung
P0001Lua-Syntaxfehler - Quellcode kann nicht geparst werden

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 + b
end
add("one", "two") -- E: string not assignable to number

Lint-Regeln bieten Stil- und Qualitatsprufungen. Aktivieren Sie sie mit --rules:

Terminal-Fenster
wippy lint --rules
CodeRegelBeschreibung
W0001no-empty-blocksLeere Blockanweisungen
W0002no-global-assignZuweisung an globale Variablen
W0003no-self-compareVergleich eines Wertes mit sich selbst
W0004no-unused-varsUnbenutzte lokale Variablen
W0005no-unused-paramsUnbenutzte Funktionsparameter
W0006no-unused-importsUnbenutzte Import-Anweisungen
W0007no-shadowed-varsVariable uberschattet ausseren Gultigkeitsbereich

Ohne --rules wird nur die Typprufung (P- und E-Codes) durchgefuhrt.

Prufen Sie bestimmte Namespaces mit --ns:

Terminal-Fenster
wippy lint --ns app # Exact namespace match
wippy lint --ns "app.*" # All under app
wippy lint --ns app --ns lib # Multiple namespaces

Abhangigkeiten der ausgewahlten Eintrage werden fur die Typprufung geladen, aber ihre Diagnosen werden nicht angezeigt.

Filtern Sie Diagnosen nach Code:

Terminal-Fenster
wippy lint --code E0001
wippy lint --code E0001 --code E0004

Begrenzen Sie die Anzahl der angezeigten Diagnosen:

Terminal-Fenster
wippy lint --limit 10 # Show first 10 issues

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 warnings

Diagnosen nach Namespace und Fehlercode gruppieren:

Terminal-Fenster
wippy lint --summary
By 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 warnings

Maschinenlesbare Ausgabe fur CI/CD-Integration:

Terminal-Fenster
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
}

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:

Terminal-Fenster
wippy lint --cache-reset

Verwenden Sie JSON-Ausgabe und Exit-Codes fur automatisierte Prufungen:

Terminal-Fenster
wippy lint --json --level error > lint-results.json

Der 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 warning
FlagKurzStandardBeschreibung
--levelwarningMinimaler Schweregrad (error, warning, hint)
--jsonfalseAusgabe im JSON-Format
--nsNach Namespace-Mustern filtern
--codeNach Fehlercodes filtern
--limit0Maximale Anzahl angezeigter Diagnosen (0 = unbegrenzt)
--summaryfalseNach Fehlercode gruppieren
--no-colorfalseFarbige Ausgabe deaktivieren
--rulesfalseLint-Regeln aktivieren (W-Serie Stil-/Qualitatsprufungen)
--cache-resetfalseCache vor dem Linting leeren
--lock-file-lwippy.lockPfad zur Lock-Datei
  • CLI - Vollstandige CLI-Referenz
  • Typen - Typsystem-Dokumentation
  • LSP - Editor-Integration mit Live-Diagnosen