Dokumentation » Anwendungen » PHP Quality Tools
PHP Quality & Security Tools
Statische Analyse, Code-Style-Prüfung und Security-Scanning für PHP. Stellt Codequalität, PSR-12 Konformität, Typsicherheit und OWASP-Compliance sicher.
PHPStan 2.1.33 + Strict Rules
PHP-CS-Fixer 3.92.3
Semgrep 1.146.0 (OWASP Scanner)
PHPUnit 12.5.4
Composer Audit CVE-Check für Dependencies
Installation /opt/php-tools/
Scripts php-check.sh, php-style-check.sh, php-test.sh, fix-permissions.sh
Verwendung
# Prüfung (dev)
/opt/scripts/php-check.sh
# Prüfung (beliebiges Projekt)
/opt/scripts/php-check.sh /pfad/zum/projekt
# Mit automatischer Korrektur
/opt/scripts/php-check.sh /pfad/zum/projekt --fix
PHPStan + Strict Rules
Statische Analyse für Typsicherheit, Null-Safety und Bug-Erkennung.
Level 5 (von 10)
Strict Rules phpstan-strict-rules 2.0.7
Konfig /opt/php-tools/phpstan.neon
Scope src/, app/ (ohne View/)
PHP-CS-Fixer
Automatische Code-Formatierung nach PSR-12 Standard.
Standard PSR-12
Konfig /opt/php-tools/.php-cs-fixer.php
Regeln
PSR-12 Basis
Short Array Syntax []
Single Quotes, Trailing Commas
Sortierte Imports, keine ungenutzten
Semgrep (OWASP Security)
Pattern-basierter Security Scanner für OWASP-Vulnerabilities.
Version 1.146.0
Konfig /opt/php-tools/semgrep-security.yml
Installation /root/.local/bin/semgrep (pipx)
Erkannte Vulnerabilities
Typ OWASP CWE
Cross-Site Scripting (XSS) A03:2021 CWE-79
XML External Entity (XXE) A05:2021 CWE-611
Server-Side Template Injection (SSTI) A03:2021 CWE-1336
Server-Side Request Forgery (SSRF) A10:2021 CWE-918
Cross-Site Request Forgery (CSRF) A01:2021 CWE-352
Command Injection A03:2021 CWE-78
SQL Injection A03:2021 CWE-89
File Inclusion A03:2021 CWE-98
Path Traversal A01:2021 CWE-22
Eval/Code Injection A03:2021 CWE-94
Unsafe Deserialization A08:2021 CWE-502
Header Injection A03:2021 CWE-113
LDAP Injection A03:2021 CWE-90
Direkt ausführen
/root/.local/bin/semgrep scan \
--config /opt/php-tools/semgrep-security.yml \
src app
Composer Audit
Prüft Composer-Dependencies auf bekannte CVEs.
composer audit --working-dir=/var/www/dev.campus.systemische-tools.de
PHPUnit
Unit-Testing Framework für PHP mit PHP 8 Attributen.
Version 12.5.4
Konfig /opt/php-tools/phpunit.xml
Bootstrap /opt/php-tools/bootstrap.php
Script /opt/scripts/php-test.sh
Verwendung
# Tests ausführen (dev)
/opt/scripts/php-test.sh
# Tests ausführen (beliebiges Projekt)
/opt/scripts/php-test.sh /pfad/zum/projekt
# Mit Coverage-Report
/opt/scripts/php-test.sh /pfad/zum/projekt --coverage
Test-Struktur
tests/
└── Unit/
└── Domain/
└── ValueObject/
└── TaskStatusTest.php
Beispiel-Test
#[CoversClass(TaskStatus::class)]
class TaskStatusTest extends TestCase
{
#[DataProvider('terminalStatusProvider')]
public function testIsTerminal(TaskStatus $status, bool $expected): void
{
$this->assertSame($expected, $status->isTerminal());
}
}
Automatisierung
PostToolUse Hook (nach jeder Dateiänderung)
Trigger Edit, Write auf *.php
Script /opt/scripts/php-style-hook.py
Prüfung PHP-CS-Fixer (nur Style)
Verhalten Warnung, kein Block
Pre-Sync Check (vor Deployment)
Trigger /opt/scripts/sync-dev-prod.sh
Prüfung PHPStan + PHP-CS-Fixer + Composer Audit + Semgrep + PHPUnit
Verhalten Blockiert bei Fehlern oder fehlgeschlagenen Tests
Prinzipien & Prüfungen
Prinzip Bedeutung Tool
PSR-12 Code Style PHP-CS-Fixer
Type Safety Typsicherheit PHPStan + Strict Rules
OWASP Security Vulnerabilities Semgrep
CVE Dependency Vulnerabilities Composer Audit
Unit Tests Verhaltens-Verifikation PHPUnit
DRY/KISS/YAGNI Clean Code Manuell / Review
Scripts im Detail
php-check.sh
Hauptscript für vollständige Qualitäts- und Sicherheitsprüfung. Führt alle 4 Checks sequentiell aus.
Pfad /opt/scripts/php-check.sh
Default-Projekt /var/www/dev.campus.systemische-tools.de
Exit-Code 0 = alle OK, 1 = mindestens ein Fehler
Checks
# Check Prüft Blockiert bei
1 PHPStan Typen, Null-Safety, Bugs Errors
2 PHP-CS-Fixer PSR-12 Code Style Style Issues
3 Composer Audit Dependency CVEs Vulnerabilities
4 Semgrep OWASP Security Security Findings
Verwendung
# Dev-Projekt prüfen
/opt/scripts/php-check.sh
# Beliebiges Projekt prüfen
/opt/scripts/php-check.sh /var/www/anderes-projekt
# Mit automatischer Style-Korrektur
/opt/scripts/php-check.sh /var/www/dev.campus.systemische-tools.de --fix
Ausgabe
=== PHP Quality & Security Check: Fri Dec 20 12:00:00 CET 2025 ===
Project: /var/www/dev.campus.systemische-tools.de
[1/4] PHPStan - Static Analysis + Strict Rules
✓ PHPStan: OK
[2/4] PHP-CS-Fixer - Code Style (PSR-12)
✓ PHP-CS-Fixer: OK
[3/4] Composer Audit - Dependency Vulnerabilities
✓ Composer Audit: No vulnerabilities
[4/4] Semgrep - OWASP Security Scan
✓ Semgrep: No vulnerabilities
=== Summary ===
All checks passed!
php-style-check.sh
Schnelle Style-Prüfung für einzelne Dateien. Wird vom PostToolUse Hook verwendet.
Pfad /opt/scripts/php-style-check.sh
Verwendung PostToolUse Hook (nach Edit/Write)
Exit-Code 0 = OK, 1 = Style Issues (Warnung)
Verhalten
Prüft nur *.php Dateien
Überspringt View-Dateien (Templates)
Verwendet PHP-CS-Fixer im Check-Mode
Gibt nur Warnung aus, blockiert nicht
Verwendung
# Einzelne Datei prüfen
/opt/scripts/php-style-check.sh /var/www/dev.campus.systemische-tools.de/src/Controller/HomeController.php
php-test.sh
PHPUnit Test-Runner für Unit-Tests.
Pfad /opt/scripts/php-test.sh
Default-Projekt /var/www/dev.campus.systemische-tools.de
Tests-Verzeichnis tests/
Coverage-Output coverage/ (HTML)
Verwendung
# Tests im dev-Projekt
/opt/scripts/php-test.sh
# Tests in anderem Projekt
/opt/scripts/php-test.sh /var/www/anderes-projekt
# Mit Coverage-Report
/opt/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 /opt/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 /opt/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 /opt/scripts/pipeline/ stehen zusätzliche Python-Tools bereit.
Tool Version Funktion
Ruff 0.14.10 Linting + Formatting (All-in-One)
mypy 1.19.1 Type Checking
python-check.sh
Prüfscript für Python-Code.
Pfad /opt/scripts/python-check.sh
Default-Verzeichnis /opt/scripts/pipeline
Konfiguration /opt/scripts/pipeline/ruff.toml
Checks
# Check Tool
1 Linting (PEP 8, Bugs, Best Practices) Ruff
2 Formatting Ruff
3 Type Checking mypy
Verwendung
# Prüfung
/opt/scripts/python-check.sh
# Auto-Fix Linting
/opt/scripts/pipeline/venv/bin/ruff check /opt/scripts/pipeline --fix
# Auto-Format
/opt/scripts/pipeline/venv/bin/ruff format /opt/scripts/pipeline