phpunit/php-code-coverage

repository·main·Indexed 27 days ago

https://github.com/sebastianbergmann/php-code-coverage

A library for collecting, processing, and rendering PHP code coverage information. It provides tools to specify file filters, select coverage drivers, and generate reports such as OpenClover. Supports serialized coverage data processing and includes hit count attributes in XML reports as of version 14.3.0.

Tokens
859
Snippets
2
Records
5
Agent score
44%

What's inside php-code-coverage

  1. Collect code coverage data and generate a report

    main

    To collect coverage, create a Filter to specify which files to include, use a DriverSelector to obtain a coverage driver (e.g., for line coverage), and instantiate CodeCoverage. Use $coverage->start() and $coverage->stop() to wrap the code you wish to measure. Finally, use ReportFacade::fromObject($coverage) to render the results, such as an OpenClover 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>');
    
    // ... run your code ...
    
    $coverage->stop();
    
    ReportFacade::fromObject($coverage)->renderOpenClover('/tmp/openclover.xml');
  2. Generate a report from serialized code coverage data

    main

    If you have previously serialized coverage data, you can generate a report by using the Unserializer to load the data and ReportFacade::fromSerializedData($data) to create a report object. This is useful for processing coverage data in a separate step from the actual test execution.

    <?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');
  3. Migrate to version 2 serialization format for .cov files

    main
    Starting with version 14.3.0, the serialization format for .cov files has been upgraded from version 1 to version 2. Files serialized with version 1 are no longer compatible and cannot be loaded or merged. If you rely on persisted .cov files, you must regenerate them using version 14.3.0 or later to ensure compatibility.