digitalrevolution/phpunit-file-coverage-inspection

可配置的 PHPUnit 文件覆盖率检查

v2.2.1 2024-06-18 10:20 UTC

This package is auto-updated.

Last update: 2024-09-18 13:01:23 UTC


README

Minimum PHP Version Run tests

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 和我们的几家商店。你想加入我们吗? 我们正在寻找开发者