NCA Social Media
Aktualisiert:
Autor:
Roland Golla
Grünes Terminal mit phpcov merge Befehl, .cov Dateien und Rakete isometrisch

Was ist phpcov?

phpcov ist ein Command-Line-Tool von Sebastian Bergmann und das offizielle CLI-Frontend für die php-code-coverage-Bibliothek. Es lässt sich als PHAR-Archiv oder über Phive installieren und ergänzt PHPUnit dort, wo einzelne Test-Läufe nicht ausreichen: beim Zusammenführen von Coverage-Daten aus parallelen oder verteilten Test-Runs. Mit über 21 Millionen Composer-Downloads gehört phpcov zum Standardwerkzeug in professionellen PHP-CI-Pipelines.

Der typische Anwendungsfall ist die CI-Pipeline: Mehrere Test-Suites laufen parallel, beispielsweise mit Paratest, jede schreibt eine .cov-Datei via --coverage-php. phpcov fasst diese Dateien mit dem Befehl phpcov merge zu einem einzigen Gesamtbericht zusammen, wahlweise als HTML, XML (OpenClover) oder serialisiertes PHP-Format. Das Tool ist Teil des PHPUnit-Ökosystems und wird aktiv von Sebastian Bergmann gepflegt.

Neben dem Mergen bietet phpcov den Befehl patch-coverage, der prüft, wie viele der im aktuellen Git-Diff geänderten Zeilen durch Tests abgedeckt sind. Das ist besonders wertvoll in Code-Review-Workflows und in Kombination mit Infection Framework für Mutation Testing. Bei Legacy-Codebasen, wo 100 % Gesamt-Coverage unrealistisch ist, liefert Patch-Coverage den entscheidenden Mehrwert: konkrete Aussagen über neue oder geänderte Zeilen.

Finde das passende Angebot für dein Projekt

Anfrage-Konfiguration

Starten Sie Ihre Anfrage

Projektart
Infos
Nachricht

Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.

CORE EXPERTISE

Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.

BFSG COMPLIANT

Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.

ENTERPRISE READY

Installation und erste Schritte 2026

Die empfohlene Installationsmethode ist Phive, das PHP-Tool-Management-System. Alternativ steht phpcov als PHAR-Download zur Verfügung. Eine Installation über Composer wird vom Autor ausdrücklich nicht empfohlen, da phpcov ein eigenständiges CLI-Tool und keine Bibliothek ist.

Code:
          

# Installation via Phive (empfohlen)
phive install phpcov
./tools/phpcov --version

# Oder als PHAR-Download
wget https://phar.phpunit.de/phpcov-X.Y.phar
php phpcov-X.Y.phar --version

Nach der Installation läuft der typische Workflow in zwei Phasen: Zuerst generiert PHPUnit für jede Test-Suite eine .cov-Datei, dann führt phpcov diese zusammen.

Code:
          

# Phase 1: .cov-Dateien erzeugen
phpunit --coverage-php /tmp/coverage/FooTest.cov tests/FooTest
phpunit --coverage-php /tmp/coverage/BarTest.cov tests/BarTest

# Phase 2: Zusammenführen und Bericht erstellen
phpcov merge --html /tmp/coverage-html /tmp/coverage
phpcov merge --html /tmp/coverage-html --openclover /tmp/coverage.xml /tmp/coverage

patch-coverage: Coverage gezielt auf Änderungen prüfen

Der Befehl patch-coverage ist besonders in agilen Teams wertvoll: Er prüft nicht die gesamte Codebasis, sondern nur die Zeilen, die im aktuellen Git-Diff geändert wurden. Das Ergebnis zeigt konkret, wie viele der geänderten ausführbaren Zeilen durch Tests abgedeckt sind.

Code:
          

# Diff erzeugen und Coverage messen
git diff HEAD^1 > /tmp/patch.txt
phpunit --coverage-php /tmp/coverage.cov

# Patch-Coverage auswerten
phpcov patch-coverage /tmp/coverage.cov /tmp/patch.txt
# Ausgabe: 1 / 2 changed executable lines covered (50.00%)

Der Exit-Code ist maschinenlesbar: 0 = alle geänderten Zeilen abgedeckt, 1 = Lücken vorhanden, 2 = keine Änderungen erkennbar (meist ein Pfad-Mismatch). Mit --path-prefix lässt sich ein abweichender Basispfad angeben, wenn Diff und Coverage-Daten aus unterschiedlichen Verzeichnissen stammen.

phpcov in CI-Pipelines integrieren und Sales-Mehrwert nutzen

In modernen CI-Setups (GitHub Actions, GitLab CI, Jenkins) läuft phpcov typischerweise als letzter Schritt nach allen parallelen Test-Jobs. Jeder Job exportiert seine .cov-Datei als Artefakt, der Merge-Job sammelt sie ein und erstellt den Gesamtbericht. Das Ergebnis kann direkt an Tools wie Codecov oder SonarQube weitergegeben werden.

  • Parallele Test-Suites mit Paratest: Jede Suite schreibt eine eigene .cov-Datei
  • Merge-Step: phpcov merge fasst alle Dateien zusammen
  • Mehrere Ausgabeformate gleichzeitig: HTML + OpenClover XML in einem Aufruf
  • Pfad-Mapping: --source für Cross-Machine-Merges, wenn Quellpfade abweichen
  • Versionsprüfung deaktivieren: --do-not-require-matching-php-version für heterogene Umgebungen

Warum das für Ihr Projekt relevant ist: Teams, die parallele Test-Suites einsetzen, verbringen ohne phpcov oft Stunden mit manuellen Coverage-Zusammenführungen oder akzeptieren lückige Berichte. Mit der richtigen Pipeline-Konfiguration liefert phpcov in Sekunden einen vollständigen Gesamtbericht — und damit eine solide Basis für Mutation Testing oder statische Analyse mit PHPStan.

NCA setzt phpcov in PHP- und Symfony-Projekten ein, um Coverage-Berichte aus verteilten Test-Läufen zusammenzuführen und Qualitätsgates in CI-Pipelines zu implementieren. Kostenlose Erstberatung: roland@nevercodealone.de | +49 176 24747727

Häufig gestellte Fragen zu phpcov (FAQ)

Von der Installation über den Merge-Workflow bis zur Patch-Coverage: Hier findest du Antworten auf die häufigsten Fragen rund um phpcov 2026.

Was ist phpcov und wofür wird es 2026 eingesetzt?

phpcov ist das offizielle CLI-Frontend für die php-code-coverage-Bibliothek von Sebastian Bergmann. Es wird eingesetzt, um .cov-Dateien aus mehreren parallelen PHPUnit-Läufen zu einem einzigen Coverage-Bericht zusammenzuführen und um gezielte Patch-Coverage für Git-Diffs zu berechnen.

Wie unterscheidet sich phpcov von PHPUnit 2026?

PHPUnit führt Tests aus und erzeugt dabei .cov-Dateien. phpcov verarbeitet diese Dateien im Nachgang: Es merged mehrere Reports zusammen, konvertiert sie in verschiedene Ausgabeformate (HTML, XML) und berechnet Patch-Coverage. Die beiden Tools ergänzen sich, ersetzen sich aber nicht.

Ist phpcov kostenlos nutzbar 2026?

Ja, phpcov ist Open Source (BSD-3-Clause) und kostenlos. Es wird als PHAR-Archiv von phar.phpunit.de bereitgestellt oder über Phive installiert. Eine Composer-Installation wird vom Autor nicht empfohlen, da es sich um ein eigenständiges Tool handelt.

Wie installiert man phpcov unter Linux und macOS 2026?

Die empfohlene Methode ist Phive: phive install phpcov. Alternativ per PHAR: wget https://phar.phpunit.de/phpcov-X.Y.phar, dann php phpcov-X.Y.phar --version zur Verifikation. X.Y mit der gewünschten Version ersetzen.

Was ist der Unterschied zwischen phpcov merge und patch-coverage 2026?

phpcov merge fasst mehrere .cov-Dateien zu einem Gesamtbericht zusammen. phpcov patch-coverage wertet aus, wie viele der im aktuellen Git-Diff geänderten Zeilen durch Tests abgedeckt sind. Beide Befehle arbeiten auf .cov-Dateien, verfolgen aber unterschiedliche Auswertungsziele.

Wie funktioniert phpcov merge in einer parallelen CI-Pipeline?

Jeder parallele Test-Job ruft PHPUnit mit --coverage-php auf und schreibt eine eigene .cov-Datei. Ein nachgelagerter Merge-Job sammelt alle .cov-Dateien in einem Verzeichnis und ruft phpcov merge --html /output /cov-dir auf. Das Ergebnis ist ein einziger HTML-Bericht über die Gesamt-Coverage.

Kann phpcov .cov-Dateien von verschiedenen PHP-Versionen mergen?

Standardmäßig verlangt phpcov identische PHP-Versionen, Coverage-Treiber und Git-Status. Mit dem Flag --do-not-require-matching-php-version lässt sich diese Prüfung deaktivieren, was heterogene CI-Umgebungen unterstützt.

Was bedeutet Exit-Code 2 bei phpcov patch-coverage?

Exit-Code 2 bedeutet, dass keine geänderten ausführbaren Zeilen erkannt wurden. Das deutet meist auf einen Pfad-Mismatch hin: Die Dateipfade im Diff stimmen nicht mit den Pfaden in den Coverage-Daten überein. Lösung: --path-prefix verwenden, um den korrekten Basispfad anzugeben.

Wie kombiniert man phpcov mit Codecov oder SonarQube?

phpcov merge kann neben HTML auch OpenClover XML (--openclover) ausgeben. Dieses XML-Format ist kompatibel mit Codecov und SonarQube. Mehrere Ausgabeformate lassen sich in einem einzigen Merge-Aufruf kombinieren.

Muss phpcov auf dem gleichen Server laufen wie die Tests?

Nein. Mit der Option --source kann ein abweichender Quellpfad angegeben werden. Das ist nützlich, wenn .cov-Dateien auf einem Build-Server erzeugt wurden, der Merge aber auf einer anderen Maschine mit abweichendem Dateipfad stattfindet.

Ist phpcov DSGVO-konform einsetzbar 2026?

phpcov ist ein lokal laufendes CLI-Tool ohne externe Datenübertragung. Es verarbeitet ausschließlich lokale .cov-Dateien und sendet keine Daten an externe Server. DSGVO-Relevanz entsteht erst, wenn die generierten Berichte auf externe Dienste wie Codecov hochgeladen werden.