matthiasnoback / live-code-coverage
在实时服务器上生成代码覆盖率报告
v1.6.0
2021-03-08 07:44 UTC
Requires
- php: ^7.3 || ^8.0
- phpunit/php-code-coverage: ^9.0
- phpunit/phpunit: ^9.3
- webmozart/assert: ^1.2
Requires (Dev)
- symfony/filesystem: ^3.3
- symfony/finder: ^3.3
- symfony/process: ^3.3
This package is auto-updated.
Last update: 2024-09-08 15:55:36 UTC
README
这个库可以帮助您在实时服务器上生成代码覆盖率报告(当然,它不必是生产服务器)。
使用以下方式安装此库
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
缺点
请注意,收集代码覆盖率数据会使您的应用程序运行速度大大减慢。请自行判断是否可以接受。