5.8 KiB
Validierungstools für EspoCRM Custom-Entwicklung
Installierte Tools
1. PHP-CLI (v8.2.29)
Zweck: Validierung von PHP-Syntax
Installation:
sudo apt install -y php-cli
Verwendung im Script:
php -l /pfad/zur/datei.php
Validiert:
- PHP-Syntax-Fehler
- Parse-Fehler
- Fehlende Klammern/Semikolons
- Ungültige Funktionsdeklarationen
2. CSSLint (v1.0.4)
Zweck: CSS-Validierung und Best-Practice-Checks
Installation:
sudo apt install -y nodejs npm
sudo npm install -g csslint
Verwendung im Script:
csslint --format=compact --quiet /pfad/zur/datei.css
Validiert:
- CSS-Syntax-Fehler
- Ungültige Properties
- Vendor-Prefix-Probleme
- Performance-Probleme
- Kompatibilitätsprobleme
Konfiguration:
Das Script verwendet standardmäßig alle csslint-Regeln. Für custom Rules kann eine .csslintrc Datei erstellt werden.
3. JSHint (v2.13.6)
Zweck: JavaScript-Code-Qualität und Syntax-Validierung
Installation:
sudo npm install -g jshint
Verwendung im Script:
jshint --config=/dev/null /pfad/zur/datei.js
Validiert:
- JavaScript-Syntax-Fehler
- Potenzielle Bugs
- Code-Style-Probleme
- Ungültige Variablen-Deklarationen
- Scope-Probleme
Konfiguration:
Aktuell nutzt das Script minimale Konfiguration. Für erweiterte Checks kann eine .jshintrc Datei erstellt werden:
{
"esversion": 6,
"browser": true,
"jquery": true,
"unused": true,
"undef": true
}
Integration im Validierungsscript
Das Script custom/scripts/validate_and_rebuild.py nutzt diese Tools automatisch:
Automatische Erkennung
# Prüft ob Tool verfügbar ist
try:
subprocess.run(['csslint', '--version'], capture_output=True)
use_csslint = True
except FileNotFoundError:
use_csslint = False
# Fallback auf Basis-Validierung
Fallback-Mechanismus
Falls ein Tool nicht verfügbar ist, verwendet das Script eine Basis-Validierung:
- CSS: Klammer-Matching, Attribut-Selektoren
- JavaScript: Klammer-Matching (rund, eckig, geschweift)
- PHP: Übersprungen mit Warnung
Validierungsebenen
Kritische Fehler (Rebuild wird abgebrochen)
- JSON-Syntax-Fehler
- PHP-Syntax-Fehler
- CSS-Syntax-Fehler (schwerwiegend)
- JavaScript-Syntax-Fehler
- Fehlende Relationship-Definitionen
Warnungen (Rebuild wird fortgesetzt)
- CSS-Best-Practice-Verletzungen
- Fehlende i18n-Übersetzungen
- Code-Style-Probleme
- Performance-Hinweise
Manuelle Verwendung der Tools
CSS prüfen
# Einzelne Datei
csslint client/custom/css/my-styles.css
# Alle CSS-Dateien
find client/custom/css -name "*.css" -exec csslint {} \;
# Mit spezifischen Regeln
csslint --errors=errors,duplicate-properties client/custom/css/
JavaScript prüfen
# Einzelne Datei
jshint client/custom/src/views/my-view.js
# Alle JS-Dateien
find client/custom/src -name "*.js" -exec jshint {} \;
# Mit Konfiguration
jshint --config .jshintrc client/custom/src/
PHP prüfen
# Einzelne Datei
php -l custom/Espo/Custom/Classes/MyClass.php
# Alle PHP-Dateien
find custom/Espo -name "*.php" -exec php -l {} \; | grep -v "No syntax errors"
Zusätzliche empfohlene Tools (optional)
1. ESLint (moderne Alternative zu JSHint)
sudo npm install -g eslint
eslint --init # Erstellt .eslintrc Konfiguration
2. Stylelint (moderne Alternative zu CSSLint)
sudo npm install -g stylelint stylelint-config-standard
# Benötigt .stylelintrc Konfiguration
3. PHPStan (statische PHP-Analyse)
composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse custom/Espo
4. PHP_CodeSniffer (PHP Code-Style)
sudo apt install -y php-codesniffer
phpcs --standard=PSR12 custom/Espo/
Troubleshooting
Tool nicht gefunden
# Prüfe Installation
which csslint
which jshint
which php
# Installiere fehlende Tools
sudo apt update
sudo apt install -y nodejs npm php-cli
sudo npm install -g csslint jshint
Validierung zu streng
Bearbeite das Script und passe die Tool-Parameter an:
# Weniger strikte CSS-Validierung
result = subprocess.run(
['csslint', '--format=compact', '--errors=errors', str(css_file)],
...
)
Performance-Probleme
Für große Projekte mit vielen Dateien:
# Parallele Validierung mit ThreadPoolExecutor
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=4) as executor:
results = executor.map(validate_css_file, css_files)
Best Practices
-
Vor jedem Commit: Führe Validierung aus
python3 custom/scripts/validate_and_rebuild.py --dry-run -
Automatisierung: Integriere in Git pre-commit hook
# .git/hooks/pre-commit #!/bin/bash python3 custom/scripts/validate_and_rebuild.py --dry-run if [ $? -ne 0 ]; then echo "Validierung fehlgeschlagen. Commit abgebrochen." exit 1 fi -
CI/CD Integration: Nutze in Build-Pipeline
# .gitlab-ci.yml / .github/workflows/ validate: script: - python3 custom/scripts/validate_and_rebuild.py --dry-run -
IDE Integration: Konfiguriere Editor für Live-Feedback
- VSCode: ESLint/Stylelint Extensions
- PHPStorm: Built-in PHP/JS/CSS Validierung
Maintenance
Updates der Tools
# System-Packages
sudo apt update && sudo apt upgrade
# NPM-Packages
sudo npm update -g csslint jshint
# Prüfe Versionen
php --version
csslint --version
jshint --version
Entfernung
# NPM-Tools
sudo npm uninstall -g csslint jshint
# APT-Packages
sudo apt remove php-cli nodejs npm
sudo apt autoremove
Letzte Aktualisierung: Januar 2026
Maintainer: Custom Scripts Team
Dokumentation: custom/scripts/VALIDATION_TOOLS.md