digitalrevolution / phpunit-file-coverage-inspection
可配置的 PHPUnit 文件覆盖率检查
v2.2.1
2024-06-18 10:20 UTC
Requires
- php: >=8.1
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-xmlwriter: *
- symfony/console: ^6.2 || ^7.0
Requires (Dev)
- digitalrevolution/accessorpair-constraint: >= 2.1.7
- mikey179/vfsstream: ^1.6.7
- phpmd/phpmd: ^2.14
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^10.0 || ^11.2
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7
README
PHPUnit 覆盖率检查
一个允许按文件定义代码覆盖率规则的工具。为每个文件设置最小覆盖率阈值,如果当前测试覆盖率尚未达到标准,则配置现有文件的自定义最小覆盖率。检查失败将以 checkstyle 格式输出,允许导入 ci/cd 工具。
使用案例
标准覆盖率计算是在整个代码库上进行的。例如,如果阈值是 80%,如果一个文件低于 80%,你永远不会注意到这一点,因为整体覆盖率从 87.6% 降至 87.4%。这个包确保这种情况不再发生,覆盖率是按文件计算的。
支持格式
- 输入:clover coverage.xml
- 输出:checkstyle 或 gitlab
安装
通过以下方式将库作为依赖项包含在您自己的项目中:
composer require "digitalrevolution/phpunit-file-coverage-inspection" --dev
配置
文件:phpfci.xml
<?xml version="1.0" encoding="UTF-8"?> <phpfci xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/digitalrevolution/phpunit-file-coverage-inspection/resources/phpfci.xsd" min-coverage="100" allow-uncovered-methods="false" > <custom-coverage> <!-- directory based coverage rule --> <directory path="src/Lib/" min="90"/> <!-- subdirectories will superceed a parent directory rule --> <directory path="src/Lib/Config/" min="100"/> <!-- file rule will always superceed a directory rule --> <file path="src/Lib/Config/File.php" min="80"/> </custom-coverage> <!-- when 'allow-uncovered-methods' is set to false, override this behaviour for specific files: --> <ignore-uncovered-methods> <file path="src/Command/ExampleCommand.php"/> </ignore-uncovered-methods> </phpfci>
或根据现有的覆盖率结果生成配置文件
php vendor/bin/phpfci baseline --baseDir /home/ci/workspace coverage.xml ./phpfci.xml
覆盖率.xml 中的文件路径将减去基本目录
使用方法
Checkstyle 格式
php vendor/bin/phpfci inspect coverage.xml --reportCheckstyle=reports/checkstyle.xml
Gitlab 格式
php vendor/bin/phpfci inspect coverage.xml --reportGitlab=reports/gitlab.errors.json
Gitlab 格式输出到文件和文本输出到 stdout
php vendor/bin/phpfci inspect coverage.xml --reportGitlab=reports/gitlab.errors.json --reportText
文本格式输出到 stdout
php vendor/bin/phpfci inspect coverage.xml php vendor/bin/phpfci inspect coverage1.xml coverage2.xml
php vendor/bin/phpfci inspect coverage.xml --reportText
命令行参数
注意:如果没有设置 --reportGitlab
,--reportCheckstyle
或 --reportText
,则默认为 --reportText=php://stdout
从 1 迁移到 2
删除了第三个必需的参数和 --report
,应替换为:--reportGitlab=<file>
,--reportCheckstyle=<file>
或 --reportText=<file>
关于我们
在 123inkt(Digital Revolution B.V. 的一部分),每天超过 50 名开发专业人士正在努力改进我们的内部 ERP 和我们的几家商店。你想加入我们吗? 我们正在寻找开发者。