Next Level Setup: Qualitäts-Gate + Projekt-Regeln (.hermes.md)
This commit is contained in:
Executable
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Git Pre-Commit Hook: Melo App Qualitäts-Gate
|
||||||
|
# Läuft automatisch vor jedem git commit
|
||||||
|
|
||||||
|
echo "🔍 Melo App Qualitäts-Gate gestartet..."
|
||||||
|
|
||||||
|
# 1. Dart Analyse
|
||||||
|
echo -n " Prüfe: dart analyze ... "
|
||||||
|
ANALYZE_OUTPUT=$(flutter analyze 2>&1)
|
||||||
|
if echo "$ANALYZE_OUTPUT" | grep -q "No issues found"; then
|
||||||
|
echo "✅"
|
||||||
|
else
|
||||||
|
echo "❌ FEHLER!"
|
||||||
|
echo "$ANALYZE_OUTPUT" | tail -20
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Dart Formatierung
|
||||||
|
echo -n " Prüfe: dart format ... "
|
||||||
|
FORMAT_OUTPUT=$(dart format --set-exit-if-changed lib/ 2>&1)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅"
|
||||||
|
else
|
||||||
|
echo "❌ Formatierungsfehler! Führe 'dart format lib/' aus."
|
||||||
|
echo "$FORMAT_OUTPUT"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Tests
|
||||||
|
echo -n " Prüfe: flutter test ... "
|
||||||
|
TEST_OUTPUT=$(flutter test 2>&1)
|
||||||
|
if echo "$TEST_OUTPUT" | grep -q "All tests passed"; then
|
||||||
|
echo "✅"
|
||||||
|
elif echo "$TEST_OUTPUT" | grep -q "No tests found"; then
|
||||||
|
echo "⚠️ Keine Tests vorhanden (überspringe)"
|
||||||
|
else
|
||||||
|
echo "❌ Tests fehlgeschlagen!"
|
||||||
|
echo "$TEST_OUTPUT" | tail -20
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Alle Prüfungen bestanden! Commit wird freigegeben."
|
||||||
+20
@@ -0,0 +1,20 @@
|
|||||||
|
# Melo App — Entwickler-Regeln (Ponytail-Prinzip)
|
||||||
|
|
||||||
|
Dieses Projekt wird nach dem **Ponytail-Prinzip** entwickelt: minimaler Code, maximale Wirkung, keine überflüssigen Abstraktionen.
|
||||||
|
|
||||||
|
## 📐 Kernregeln für die Entwicklung
|
||||||
|
|
||||||
|
### 1. Minimalismus & Struktur
|
||||||
|
- **Kein Overengineering:** Keine komplexen Repository-Muster oder unnötige Service-Klassen. Direkte, einfache Lösungen (wie Singleton-Datenbank-Helfer direkt in ViewModels/Widgets) sind bevorzugt.
|
||||||
|
- **Dateigröße:** Versuche, Dateien unter 500 Zeilen zu halten. Größere UI-Teile oder Widgets in separate Widget-Dateien auslagern.
|
||||||
|
- **Maximal 100 Zeilen pro Task:** Halte die Änderungen pro Commit kompakt und zielgerichtet (max. ~100 Zeilen neuer Code).
|
||||||
|
|
||||||
|
### 2. Sprachregeln (Deutsch)
|
||||||
|
- **Variablen & Methoden:** Alle Bezeichner für Variablen, Methoden, Funktionen und Widgets werden **strikt auf Deutsch** benannt (z. B. `_ladeSongs()`, `_aktiverTab`, `letzteSongs`).
|
||||||
|
- **Kommentare:** Dokumentation und Code-Kommentare werden ausschließlich auf Deutsch verfasst und erklären das *Warum*, nicht das *Was*.
|
||||||
|
|
||||||
|
### 3. Qualitäts-Sicherung & Tests
|
||||||
|
- **Ressourcen freigeben:** Stelle sicher, dass jede `StreamSubscription` und jeder `AudioPlayer` in `dispose()` der Widgets oder Services ordnungsgemäß gecancelled/geschlossen wird, um Speicherlecks zu verhindern.
|
||||||
|
- **Fehlerbehandlung:** Jeder Dateizugriff, Web-Download oder Datenbank-Vorgang wird mit einem sicheren `try-catch`-Block abgesichert.
|
||||||
|
- **Sicherer Build:** Vor jedem Commit muss die App fehlerfrei bauen. Führe im Zweifel einen schnellen Test-Build durch:
|
||||||
|
`flutter build apk --release --split-per-abi`
|
||||||
Reference in New Issue
Block a user