ToolStabil
Velisch Linter
Analysiert Code auf Qualität, Best Practices und potenzielle Probleme.
Installation
cd tools/linter
cargo build --releaseVerwendung
Basis-Check
velin-lint checkSpezifisches Verzeichnis
velin-lint check src/JSON-Output
velin-lint check --json > lint-report.jsonBestimmte Regeln
velin-lint check --rules unused-variable --rules long-functionVerfügbare Regeln
Code-Qualität
unused-variableErkennt ungenutzte Variablen
unused-functionErkennt ungenutzte Funktionen
unused-importErkennt ungenutzte Imports
long-functionWarnt bei zu langen Funktionen (>50 Zeilen)
complex-functionWarnt bei zu komplexen Funktionen
deeply-nestedWarnt bei zu tief verschachteltem Code
Best Practices
naming-conventionPrüft Namenskonventionen
missing-docsWarnt bei fehlender Dokumentation
magic-numbersWarnt bei Magic Numbers
error-handlingPrüft auf fehlende Error-Handling
Performance
inefficient-loopErkennt ineffiziente Schleifen
unnecessary-cloneErkennt unnötige Clone-Operationen
large-structWarnt 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 hinzuKonfiguration
.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
fiFalse 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)