ToolStabil

Velisch Linter

Analysiert Code auf Qualität, Best Practices und potenzielle Probleme.

Installation

cd tools/linter
cargo build --release

Verwendung

Basis-Check

velin-lint check

Spezifisches Verzeichnis

velin-lint check src/

JSON-Output

velin-lint check --json > lint-report.json

Bestimmte Regeln

velin-lint check --rules unused-variable --rules long-function

Verfügbare Regeln

Code-Qualität

unused-variable

Erkennt ungenutzte Variablen

unused-function

Erkennt ungenutzte Funktionen

unused-import

Erkennt ungenutzte Imports

long-function

Warnt bei zu langen Funktionen (>50 Zeilen)

complex-function

Warnt bei zu komplexen Funktionen

deeply-nested

Warnt bei zu tief verschachteltem Code

Best Practices

naming-convention

Prüft Namenskonventionen

missing-docs

Warnt bei fehlender Dokumentation

magic-numbers

Warnt bei Magic Numbers

error-handling

Prüft auf fehlende Error-Handling

Performance

inefficient-loop

Erkennt ineffiziente Schleifen

unnecessary-clone

Erkennt unnötige Clone-Operationen

large-struct

Warnt bei sehr großen Structs

Beispiel-Output

🔍 Analysiere 5 Datei(en)...

📊 Gefundene Probleme: 3

src/main.velin:15:3 [warning] unused-variable: Ungenutzte Variable: 'temp'
  💡 Vorschlag: Entferne die Variable 'temp' oder verwende sie

src/utils.velin:42:1 [warning] long-function: Funktion 'processData' ist zu lang (67 Zeilen)
  💡 Vorschlag: Teile die Funktion in kleinere Funktionen auf

src/api.velin:8:1 [info] missing-docs: Öffentliche Funktion 'createUser' hat keine Dokumentation
  💡 Vorschlag: Füge /// Doc-Comment hinzu

Konfiguration

.velinlintrc.jsonjson
{
  "rules": {
    "unused-variable": "error",
    "long-function": "warning",
    "missing-docs": "info"
  },
  "ignore": [
    "target/**",
    "vendor/**"
  ],
  "max-function-length": 50,
  "max-complexity": 10,
  "max-nesting-depth": 4
}

CI/CD Integration

.github/workflows/lint.ymlyaml
- name: Lint Code
  run: |
    cd tools/linter
    cargo build --release
    ./target/release/velin-lint check --json > lint-report.json
    if [ -s lint-report.json ]; then
      cat lint-report.json
      exit 1
    fi

False Positives

Bei False Positives kannst du Regeln deaktivieren:

// velin-lint-disable-next-line unused-variable
let temp = calculateValue();

// velin-lint-disable (für ganze Dateien)