php-code-coverage

GitHub

Library that provides collection, processing, and rendering functionality for PHP code coverage information.

8,933 stars PHP Markdown Skills CodeWiki
AI Prompts & Endpoints
Agent Skills View CodeWiki Knowledge Base

Repository: sebastianbergmann/php-code-coverage


Stars: 8931

README.md

phpunit/php-code-coverage

![Latest Stable Version](https://packagist.org/packages/phpunit/php-code-coverage)
![CI Status](https://github.com/sebastianbergmann/php-code-coverage/actions)
![codecov](https://codecov.io/gh/sebastianbergmann/php-code-coverage)

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:

text
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:

text
composer require --dev phpunit/php-code-coverage

Usage

Collecting code coverage data and generating a report

php
<?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
<?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');