matthiasnoback/live-code-coverage

在实时服务器上生成代码覆盖率报告

v1.6.0 2021-03-08 07:44 UTC

This package is auto-updated.

Last update: 2024-09-08 15:55:36 UTC


README

Build Status

这个库可以帮助您在实时服务器上生成代码覆盖率报告(当然,它不必是生产服务器)。

使用以下方式安装此库

composer require matthiasnoback/live-code-coverage

收集代码覆盖率数据

在您的入口控制器中(例如 index.php),添加以下代码

<?php

use LiveCodeCoverage\LiveCodeCoverage;

$shutDownCodeCoverage = LiveCodeCoverage::bootstrap(
    (bool)getenv('CODE_COVERAGE_ENABLED'),
    __DIR__ . '/../var/coverage',
    __DIR__ . '/../phpunit.xml.dist'
);

// Run your web application now...

// This will save and store collected coverage data:
$shutDownCodeCoverage();
  • LiveCodeCoverage::bootstrap() 的第一个参数是一个布尔值,用于确定是否启用代码覆盖率。示例展示了如何使用环境变量。
  • 第二个参数是存储所有收集到的覆盖率数据的目录(*.cov 文件)。如果此目录尚不存在,它将被创建。
  • 第三个参数是 PHPUnit 配置文件的路径。其 <filter> 部分将用于配置代码覆盖率白名单。例如,这个 phpunit.xml.dist 文件可能看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<phpunit>
    <filter>
        <whitelist>
            <directory suffix=".php">src</directory>
        </whitelist>
    </filter>
</phpunit>

大多数在 PHPUnit 中可用的配置指令 也可用于此库。如果您发现某些功能不起作用,请提交一个问题。

如果您没有提供 PHPUnit 配置文件,则不会应用任何过滤器,因此您将获得项目中所有代码的覆盖率报告,包括供应商和测试代码(如果适用)。

如果您的应用程序是一个遗留应用程序,其中在执行到达入口控制器末尾之前使用 exit()die(),则引导应略有不同

$shutDownCodeCoverage = LiveCodeCoverage::bootstrap(
    // ...
);
register_shutdown_function($shutDownCodeCoverage);

// Run your web application now...

生成代码覆盖率报告(HTML、Clover 等)

要合并所有覆盖率数据并为其生成报告,请安装 Sebastian Bergmann 的 phpcov 工具。按照以下方式运行它(或以任何您喜欢的其他方式)

phpcov merge --html=./coverage/html ./var/coverage

缺点

请注意,收集代码覆盖率数据会使您的应用程序运行速度大大减慢。请自行判断是否可以接受。