Kein Architektur-Score. Keine Design-Bewertung. Keine Business-Logic-Analyse.
Nur Hygiene: Ordnung, Vergleichbarkeit, Auffälligkeiten sichtbar machen.
PHP Quality & Security Tools
Erstellt: 2025-12-20 | Aktualisiert: 2025-12-31
Statische Analyse, Code-Style-Prüfung und Security-Scanning für PHP. Stellt Codequalität, PSR-12 Konformität, Typsicherheit und OWASP-Compliance sicher.
# Tests im dev-Projekt
/var/www/scripts/php-test.sh
# Tests in anderem Projekt
/var/www/scripts/php-test.sh /var/www/anderes-projekt
# Mit Coverage-Report
/var/www/scripts/php-test.sh /var/www/dev.campus.systemische-tools.de --coverage
Ausgabe
=== PHP Unit Tests: Fri Dec 20 12:00:00 CET 2025 ===
Project: /var/www/dev.campus.systemische-tools.de
Found 3 test file(s)
PHPUnit 12.5.4
TaskStatus
✓ Is terminal with completed returns true
✓ Is terminal with failed returns true
✓ Is terminal with pending returns false
✓ All tests passed!
fix-permissions.sh
Setzt Dateiberechtigungen für Web-Verzeichnisse zurück.
Pfad
/var/www/scripts/fix-permissions.sh
Owner
www-data:www-data
Permissions
755 (rwxr-xr-x)
Betroffene Verzeichnisse
/var/www/dev.campus.systemische-tools.de
/var/www/prod.campus.systemische-tools.de
Verwendung
# Als root ausführen
sudo /var/www/scripts/fix-permissions.sh
Wann verwenden
Nach manuellem Datei-Upload
Nach Git-Operationen (falls verwendet)
Bei Permission-Denied Fehlern
Nach Änderungen durch andere Benutzer
Script-Übersicht
Script
Zweck
Wann verwenden
php-check.sh
Vollständige Prüfung
Vor Deployment, nach größeren Änderungen
php-style-check.sh
Schnelle Style-Prüfung
Automatisch via Hook
php-test.sh
Unit-Tests
Vor Deployment, nach Code-Änderungen
fix-permissions.sh
Berechtigungen
Bei Permission-Problemen
python-check.sh
Python Linting + Types
Nach Änderungen an Pipeline-Scripts
Python Quality Tools
Für die KI-Pipeline unter /var/www/scripts/pipeline/ stehen zusätzliche Python-Tools bereit.
JavaScript-Qualitätsprüfung mit ESLint und Prettier.
Pfad
/var/www/scripts/js-check.sh
Default-Projekt
/var/www/dev.campus.systemische-tools.de
Prüft
public/js/**/*.js
Checks
#
Check
Tool
1
Linting
ESLint
2
Formatting
Prettier
Verwendung
# Dev-Projekt
/var/www/scripts/js-check.sh
# Anderes Projekt
/var/www/scripts/js-check.sh /var/www/anderes-projekt
Ausgabe
=== JavaScript Quality Check: Fri Dec 20 12:00:00 CET 2025 ===
Directory: /var/www/dev.campus.systemische-tools.de/public/js
Found 2 JavaScript file(s)
[1/2] ESLint - Linting
✓ ESLint: No errors (1 warning)
[2/2] Prettier - Formatting
✓ Prettier: All files formatted
=== Summary ===
All checks passed!
css-check.sh
CSS-Qualitätsprüfung mit Stylelint.
Pfad
/var/www/scripts/css-check.sh
Default-Projekt
/var/www/dev.campus.systemische-tools.de
Prüft
public/css/**/*.css
Verwendung
# Dev-Projekt
/var/www/scripts/css-check.sh
# Mit Auto-Fix
cd /var/www/dev.campus.systemische-tools.de && \
npx stylelint "public/css/**/*.css" --config /var/www/scripts/.stylelintrc.json --fix
Ausgabe
=== CSS Quality Check: Fri Dec 20 12:00:00 CET 2025 ===
Directory: /var/www/dev.campus.systemische-tools.de/public/css
Found 3 CSS file(s)
[1/1] Stylelint - Linting
✓ Stylelint: No errors
=== Summary ===
All checks passed!
html-check.sh
HTML-Validierung für PHP-Templates.
Pfad
/var/www/scripts/html-check.sh
Default-Projekt
/var/www/dev.campus.systemische-tools.de
Prüft
src/View/**/*.php (ohne docs/)
Hinweis
Das Script kopiert PHP-Views temporär als .html-Dateien für HTMLHint. Einige Regeln sind deaktiviert, da PHP-Syntax False Positives erzeugt.
Verwendung
# Dev-Projekt
/var/www/scripts/html-check.sh
# Anderes Projekt
/var/www/scripts/html-check.sh /var/www/anderes-projekt
Ausgabe
=== HTML Quality Check: Fri Dec 20 12:00:00 CET 2025 ===
Directory: /var/www/dev.campus.systemische-tools.de/src/View
Found 9 View file(s)
[1/1] HTMLHint - HTML Structure Check
Scanned 5 files, no errors found
✓ HTMLHint: No errors
=== Summary ===
All checks passed!
Script-Übersicht
Script
Sprache
Tools
Wann verwenden
js-check.sh
JavaScript
ESLint, Prettier
Nach JS-Änderungen
css-check.sh
CSS
Stylelint
Nach CSS-Änderungen
html-check.sh
HTML/PHP
HTMLHint
Nach View-Änderungen
Contracts
Die Frontend-Tools validieren folgende Architecture Contracts:
Contract
Tool
Status
js-browser-architecture-contract_v2.yaml
ESLint
Aktiv
CSS Contract (ID: 2)
Stylelint
Aktiv
html-tables-contract_v1.0.yaml
HTMLHint
Geplant
Konfigurationsdateien
Datei
Tool
Format
/var/www/scripts/eslint.config.js
ESLint
ES Module (Flat Config)
/var/www/scripts/.stylelintrc.json
Stylelint
JSON
/var/www/scripts/.htmlhintrc
HTMLHint
JSON
Einschränkungen
HTMLHint + PHP
HTMLHint ist für reines HTML konzipiert. Bei PHP-Templates gibt es Einschränkungen:
PHP-Tags werden als HTML-Content interpretiert
tag-pair Regel muss deaktiviert bleiben
spec-char-escape Regel muss deaktiviert bleiben
Komplexe PHP-Kontrollstrukturen können Parsing-Probleme verursachen
Workaround
Die verbleibenden Regeln (ID-Unique, Alt-Require, Attr-Validation) funktionieren zuverlässig und bieten weiterhin Mehrwert.
Bewertung: Sehr umfassend, findet auch implizite Konzepte
Claude Opus
Auftragsklärung (CONCEPT)
Teambuilding (CONCEPT)
Prozessbegleitung (CONCEPT)
Teamentwicklung (CONCEPT)
Teamcoaching (CONCEPT)
Bewertung: Präzise, fokussiert auf Kernkonzepte
gpt-oss:20b
❌ Keine valide JSON-Ausgabe. Das Modell ignorierte die Formatierungsanweisung und produzierte Freitext.
2. Taxonomy Classification
Modell
Kategorien
Konfidenz
gemma3:4b-it-qat
Theorie, Methoden, Praxis
0.95
gpt-oss:20b
-
0
Claude Opus
Organisation, Methoden, Kommunikation
0.85
Analyse
gemma3: Betont den Lerncharakter (Theorie/Praxis)
Claude Opus: Betont den prozessualen Charakter (Organisation/Kommunikation)
Beide Klassifikationen sind valide und zeigen unterschiedliche Perspektiven auf denselben Text.
3. Question Generation
gemma3:4b-it-qat (3 Fragen, 3.7s)
Was ist die zentrale Aussage bezüglich Auftragsklärung?
→ Die Wichtigkeit einer guten Auftragsklärung kann gar nicht stark genug betont werden.
Welche Aussage wird getroffen, dass sich je nach Kontext ändert?
→ Je nachdem, um was es geht, wirst du nicht nur einen anderen 'Hut' aufsetzen...
Welche beiden Fragen werden als Ausgangspunkt für die Auftragsklärung genannt?
→ Worum genau geht es? Und worum geht es wirklich?
Claude Opus (3 Fragen, 6.7s)
Warum ist die Auftragsklärung mehr als nur eine Serviceleistung?
→ Die Auftragsklärung ist bereits eine erste Intervention, da sie den Prozess aktiviert...
Welche zwei zentralen Fragen sollten zu Beginn einer Auftragsklärung gestellt werden?
→ 'Worum genau geht es?' und 'Und worum geht es wirklich?'
Warum beeinflusst die Art des Auftrags die Arbeitsweise des Coaches?
→ Je nach Auftragsart nimmt der Coach eine andere Rolle ein...
Vergleich der Fragenqualität
Kriterium
gemma3
Claude Opus
Klarheit
⭐⭐⭐⭐
⭐⭐⭐⭐⭐
Tiefgang
⭐⭐⭐
⭐⭐⭐⭐⭐
Antwortqualität
⭐⭐⭐⭐
⭐⭐⭐⭐⭐
Geschwindigkeit
⭐⭐⭐⭐⭐
⭐⭐⭐
Gesamtbewertung
Modell
Gesamt-Zeit
JSON-Compliance
Qualität
Kosten
Empfehlung
gemma3:4b-it-qat
23.0s
✅ 100%
⭐⭐⭐⭐
Kostenlos
⭐ Beste Wahl für Pipeline
gpt-oss:20b
10.6s
❌ 0%
-
Kostenlos
Nicht geeignet
Claude Opus
20.3s
✅ 100%
⭐⭐⭐⭐⭐
~$0.05/Anfrage
Beste Qualität, aber teuer
Empfehlungen
Für die Pipeline (Massenverarbeitung)
→ gemma3:4b-it-qat
Exzellente JSON-Compliance
Gute Balance aus Geschwindigkeit und Qualität
Kostenlos und lokal
Findet mehr Entitäten als Claude Opus
Für Premium-Analyse
→ Claude Opus
Höchste Antwortqualität
Bessere Begründungen und Tiefgang
Für wichtige Dokumente oder Qualitätskontrolle
Nicht empfohlen
❌ gpt-oss:20b
Ignoriert JSON-Formatierungsanweisungen
Für strukturierte Ausgabe ungeeignet
Möglicherweise für freie Textgenerierung geeignet
Konfigurationsempfehlung
# config.py
DEFAULT_ANALYSIS_MODEL = "gemma3:4b-it-qat" # Lokal, schnell, zuverlässig
PREMIUM_ANALYSIS_MODEL = "claude-opus-4-5-20251101" # Für wichtige Dokumente
# Pipeline Steps
steps:
- vision_analyze: minicpm-v:latest # Vision bleibt bei MiniCPM
- entity_extraction: gemma3:4b-it-qat
- taxonomy_classification: gemma3:4b-it-qat
- question_generation: gemma3:4b-it-qat # Oder Claude für Premium
Pipeline-Vergleich: Ollama gemma3:27b vs Anthropic Opus 4.5