permafrost-dev/coverage-check

检查项目代码覆盖率,可选地强制最小值

v2.0.0 2023-08-27 09:09 UTC

This package is auto-updated.

Last update: 2024-09-08 21:48:11 UTC


README

coverage-check logo

Package Version Downloads Test Run Status
license code coverage

使用clover.xml文件显示项目的代码覆盖率,可选地强制最小代码覆盖率百分比。

此包设计用于在您的CI/CD或自动化测试过程中使用(例如,使用GitHub Workflows)。

此包的概念基于这篇文章

``

关于PHP 7.x支持的说明:如果您正在使用PHP 7.x,请使用此包的1.x版本。

安装

composer require permafrost-dev/coverage-check --dev

用法

使用--require-r标志指定有效的clover.xml文件和(可选)需要的最小覆盖率百分比。百分比可以是整数(整数)或小数(浮点数)。

如果您指定了--require/-r标志,如果覆盖率百分比低于您提供的值,检查将失败,并且进程退出码将不为零。

如果您没有指定--require/-r标志,则仅显示代码覆盖率百分比,并且退出码始终为零。

./vendor/bin/coverage-check clover.xml
./vendor/bin/coverage-check clover.xml --require=50
./vendor/bin/coverage-check clover.xml -r 80.5
./vendor/bin/coverage-check clover.xml -m statement -r 75
./vendor/bin/coverage-check clover.xml --precision=1

可用选项

指标字段

可以使用--metric=<name>-m <name>选项指定用于计算代码覆盖率的字段。

有效的字段名称是element(默认),statementmethod

生成clover格式覆盖率文件

PHPUnit可以生成clover格式的覆盖率报告

./vendor/bin/phpunit --coverage-clover clover.xml

示例GitHub工作流

name: run-tests

on: [push, pull_request]

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: true
      matrix:
        os: [ubuntu-latest]
        php: [8.1, 8.0, 7.4, 7.3]

    name: P${{ matrix.php }} - ${{ matrix.os }}

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, intl, iconv, fileinfo
          coverage: pcov

      - name: Setup problem matchers
        run: |
          echo "::add-matcher::${{ runner.tool_cache }}/php.json"
          echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"

      - name: Install dependencies
        run: composer update --prefer-stable --prefer-dist --no-interaction

      - name: Execute tests
        run: ./vendor/bin/phpunit --coverage-clover clover.xml

      - name: Enforce 75% code coverage
        run: ./vendor/bin/coverage-check clover.xml --require=75 --precision=2

测试

./vendor/bin/phpunit

变更日志

有关最近更改的更多信息,请参阅变更日志

贡献

有关详细信息,请参阅贡献指南

安全漏洞

请查阅我们的安全策略了解如何报告安全漏洞。

鸣谢

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件