phpunit / php-code-coverage
Library that provides collection, processing, and rendering functionality for PHP code coverage information.
14.2.2
2026-06-08 11:50 UTC
Requires
- php: >=8.4
- ext-dom: *
- ext-libxml: *
- ext-mbstring: *
- ext-xmlwriter: *
- nikic/php-parser: ^5.7.0
- phpunit/php-text-template: ^6.0
- sebastian/complexity: ^6.0
- sebastian/environment: ^9.3.2
- sebastian/git-state: ^1.0
- sebastian/lines-of-code: ^5.0.1
- sebastian/version: ^7.0
- theseer/tokenizer: ^2.0.1
Requires (Dev)
- phpunit/phpunit: ^13.2.0
Suggests
- ext-pcov: PHP extension that provides line coverage
- ext-xdebug: PHP extension that provides line coverage as well as branch and path coverage
This package is auto-updated.
Last update: 2026-06-09 11:43:34 UTC
README
Provides collection, processing, and rendering functionality for PHP code coverage information.
Installation
You can add this library as a local, per-project dependency to your project using Composer:
composer require phpunit/php-code-coverage
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
composer require --dev phpunit/php-code-coverage
Usage
Collecting code coverage data and generating a report
<?php declare(strict_types=1); use SebastianBergmann\CodeCoverage\CodeCoverage; use SebastianBergmann\CodeCoverage\Driver\Selector as DriverSelector; use SebastianBergmann\CodeCoverage\Filter; use SebastianBergmann\CodeCoverage\Report\Facade as ReportFacade; $filter = new Filter; $filter->includeFiles( [ '/path/to/file.php', '/path/to/another_file.php', ], ); $coverage = new CodeCoverage( (new DriverSelector)->forLineCoverage($filter), $filter, ); $coverage->start('<name of test>'); // ... $coverage->stop(); ReportFacade::fromObject($coverage)->renderOpenClover('/tmp/openclover.xml');
Generating a report from serialized code coverage data
<?php declare(strict_types=1); use SebastianBergmann\CodeCoverage\Report\Facade as ReportFacade; use SebastianBergmann\CodeCoverage\Serialization\Unserializer; $data = (new Unserializer)->unserialize('/path/to/coverage.php'); ReportFacade::fromSerializedData($data)->renderOpenClover('/tmp/openclover.xml');