mediawiki / phpunit-patch-coverage
为 Git 补丁生成覆盖率报告
0.0.13
2023-02-06 14:05 UTC
Requires
- php: >=7.4.0
- nikic/php-parser: ^4.15.1
- phalcongelist/php-diff: 2.0.4
- symfony/console: ^3.3 || ^4 || ^5 || ^6
- symfony/finder: ^3.3 || ^4 || ^5 || ^6
- symfony/process: ^3.3 || ^4 || ^5 || ^6
- wikimedia/clover-diff: ^2.0.0
- wikimedia/scoped-callback: ^1.0 || ^2.0 || ^3.0 || ^4.0
Requires (Dev)
- mediawiki/mediawiki-codesniffer: 40.0.1
- mediawiki/mediawiki-phan-config: 0.12.0
- mediawiki/minus-x: 1.1.1
- ockcyp/covers-validator: 1.6.0
- php-parallel-lint/php-console-highlighter: 1.0.0
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpunit/phpunit: ^9.5
README
这是一个用于在不实际运行整个覆盖率报告的情况下为 Git 补丁生成覆盖率报告的工具。
目的
使用 Xdebug 运行 PHPUnit 覆盖率报告可能会非常慢。例如,MediaWiki 核心的覆盖率报告需要大约 2 小时才能运行。这使得开发者难以快速获取关于他们的补丁对整体覆盖率影响的结果。
本工具的目标是在不运行完整的覆盖率测试的情况下生成 Git 补丁的覆盖率报告。
实现
我们查看最后提交中更改的文件。我们识别出更改的类以及更改的测试。然后我们找到覆盖这些类的所有测试,并运行这些文件上的测试以进行覆盖率。
接下来我们将检查前一个提交,并重新计算应该运行哪些测试(@covers 和修改的文件)。我们将重新运行覆盖率,然后比较结果!
可能有很多边缘情况,这种方法可能不起作用,但我认为它会做得相当不错。
用法
将 composer 依赖项添加到您的项目中
composer require --dev mediawiki/phpunit-patch-coverage
当前工作目录必须是您的 git 仓库。使用完整选项
./vendor/bin/phpunit-patch-coverage check \
--command "php vendor/bin/phpunit" \
--sha1 HEAD
上面示例中显示的选项是默认值,不需要再次指定。您可能希望默认禁用 xdebug,然后在运行时指定它: php -d zend_extension=xdebug.so ...
。或者如果您有 PHPUnit 包装器(如 MediaWiki),您可以调用它。
许可证
phpunit-patch-coverage 由 Kunal Mehta (C) 2018 制作,根据 GPL v3 或任何后续版本的条件。有关更多详细信息,请参阅 COPYING。