Diese Anleitung beschreibt die Integration von PHPStan in ein Symfony-Projekt und die Einrichtung eines GIT Pre-Commit Hooks, um sicherzustellen, dass der PHPStan-Check vor jedem Push-Vorgang durchgeführt wird.
Voraussetzungen
- Ein Symfony-Projekt
- PHPStan installiert (idealerweise als Composer-Abhängigkeit)
- GIT installiert und eingerichtet
1. Installation von PHPStan
Falls PHPStan noch nicht im Projekt installiert ist, erfolgt die Installation über Composer:
composer require --dev phpstan/phpstan
2. PHPStan Konfiguration
In der Regel wird PHPStan mit einer Konfigurationsdatei verwendet, um spezifische Regeln und Pfade für die Analyse festzulegen.
- Eine Datei
phpstan.neon
oderphpstan.neon.dist
im Projektstammverzeichnis anlegen. - Grundlegende Konfiguration einfügen:
parameters:
level: 6
paths:
- config/
- public/
- src/
- tests/
level
: Der PHPStan-Level bestimmt die Strenge der Analysen. Stufen reichen von 0 (am wenigsten streng) bis 9 (am strengsten).paths
: Verzeichnisse, die analysiert werden sollen.
3. Lokales Ausführen von PHPStan
Um sicherzustellen, dass PHPStan korrekt funktioniert, sollte es manuell ausgeführt werden:
vendor/bin/phpstan analyse
Falls Fehler oder Warnungen ausgegeben werden, sollten diese vor dem nächsten Schritt behoben werden.
4. Einrichten des GIT Pre-Commit Hooks
Um sicherzustellen, dass PHPStan vor jedem Commit ausgeführt wird, wird ein Pre-Commit Hook eingerichtet. Dieser Hook wird jedes Mal ausgeführt, wenn ein git commit
ausgeführt wird.
- Ein neues Verzeichnis
.git/hooks
im Projektstammverzeichnis öffnen. - Eine Datei namens
pre-commit
erstellen (ohne Dateierweiterung). - Folgendes Skript in die Datei
pre-commit
einfügen (oder ergänzen):
#!/bin/sh
# Listet alle Dateien auf, die für den Commit vorgemerkt sind
staged_files=$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.php$')
# Wenn keine PHP-Dateien im Commit sind, überspringe die Überprüfung
if [ -z "$staged_files" ]; then
echo "Keine PHP-Dateien zum Überprüfen."
exit 0
fi
# Ausführen von PHPStan nur auf den vorgemerkten Dateien
vendor/bin/phpstan analyse $staged_files
if [ $? -ne 0 ]; then
echo "PHPStan hat Fehler in den vorgemerkten Dateien gefunden. Commit wird abgebrochen."
exit 1
fi
- Die Datei ausführbar machen:
chmod +x .git/hooks/pre-commit
5. Testen des Pre-Commit Hooks
Nach der Einrichtung kann der Pre-Commit Hook getestet werden, indem ein Commit ausgeführt wird:
git commit -m"Test Pre-Commit Hook"
Falls PHPStan Fehler findet, wird der Commit abgebrochen, und die entsprechenden Fehlermeldungen werden ausgegeben. Nur wenn PHPStan fehlerfrei durchläuft, wird der Commit-Vorgang fortgesetzt.