orbeji/phpunit-pr-coverage-check

使用PHPUnit的clover报告检查PR的代码覆盖率

1.1.0 2024-04-10 19:40 UTC

This package is auto-updated.

Last update: 2024-09-10 20:45:21 UTC


README


Phpunit PR覆盖率检查

报告错误 · 请求功能

Tests Static analysis Symfony & php compatibility

关于项目

灵感来自https://github.com/richardregeer/phpunit-coverage-check

本项目是一个控制台命令,它会过滤你的PHPUnit测试覆盖率报告,只考虑PullRequest的修改,这样你可以确保PR有足够的测试。

(返回顶部)

入门指南

安装

确保全局已安装Composer,如Composer文档的安装章节中所述。

打开命令行,进入你的项目目录并执行

$ composer require --dev orbeji/phpunit-pr-coverage-check

用法

使用此命令有两种方式

  • 传递diff文件
  • 传递git仓库信息

使用第一种方式,你需要生成合适的diff文件传递给命令。diff文件必须只包含pr中修改的文件/行。为此,你可以调用git diff 目标分支...PR分支 > diff.txt,对于BitbucketGitHub,你有环境变量来知道当前和目标分支。

diff文件示例:Bitbucket

vendor/bin/phpunit --configuration phpunit.xml.dist --testsuite pipelines --coverage-clover 'clover.xml'
git diff origin/${BITBUCKET_PR_DESTINATION_BRANCH}...origin/${BITBUCKET_BRANCH} > diff.txt
vendor/bin/pr-coverage-check check clover.xml 100 --diff=diff.txt --report=ansi

GitHub

vendor/bin/phpunit --coverage-clover clover.xml
git diff ${GITHUB_BASE_REF}...${GITHUB_REF_NAME} > diff.txt
vendor/bin/pr-coverage-check check clover.xml 100 --diff=diff.txt

git仓库信息

vendor/bin/pr-coverage-check check clover.xml 100 --pullrequest-id=1 --provider=Github --workspace=orbeji --repository=test --api_token=API_TOKEN 

API令牌必须具有PullRequest范围的权限。

对于GitHub,在工作区选项中填写仓库所有者。

无论如何,如果覆盖率未达标,命令将返回覆盖百分比

Coverage 40%

报告

在执行命令行时,你可以传递--report选项来生成一个包含PR未覆盖行的表格

此选项接受3个值

  • ansi:控制台输出的覆盖率表格
  • comment:PR评论中的覆盖率表格
  • report:Bitbucket报告

示例

ansi

root@bbfb2d246e64:/app# bin/pr-coverage-check check tests/clover.xml 90 --diff=tests/diff.txt --report=ansi
Coverage: 40%
--------------- ------------ 
File            Uncovered Lines
--------------- ------------ 
src/Dummy.php   19, 20, 26
--------------- ------------ 

comment: report

CI集成

Bitbucket Pipelines

pipelines:
  pull-requests:
      feature/*:
        - step:
            name: phpunit coverage check
            image:
              name: orbeji/base:7.2-xdebug-cli
            script:
              - composer install
              - vendor/bin/phpunit --configuration phpunit.xml.dist --testsuite pipelines --coverage-clover 'clover.xml'
              - git diff origin/${BITBUCKET_PR_DESTINATION_BRANCH}...origin/${BITBUCKET_BRANCH} > diff.txt
              - vendor/bin/pr-coverage-check check clover.xml 100 --diff=diff.txt --report=ansi
            caches:
              - composer

GitHub Actions

name: PHPUnit and Coverage Check

on: [pull_request]

jobs:
  test:
    runs-on: ubuntu-22.04

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

    - name: Set up PHP
      uses: shivammathur/setup-php@v2
      with:
        php-version: '7.2'

    - name: Install dependencies
      run: composer install

    - name: Run PHPUnit with coverage
      run: vendor/bin/phpunit --configuration phpunit.xml.dist --testsuite pipelines --coverage-clover 'clover.xml'

    - name: Git diff
      run: git fetch && git diff origin/${GITHUB_BASE_REF}...origin/${GITHUB_HEAD_REF} > diff.txt

    - name: PR Coverage Check
      run: vendor/bin/pr-coverage-check check clover.xml 100 --diff=diff.txt --report=ansi

路线图

  • 添加Bitbucket报告示例截图
  • 添加Bitbucket和GitHub的CI示例

查看开放问题获取所有建议功能(和已知问题的)的完整列表。

(返回顶部)

贡献

欢迎提交拉取请求。对于重大更改,请先提交一个问题以讨论你想要进行的更改。

请确保根据需要更新测试,并确保所有GitHub Actions都通过。

(返回顶部)

许可证

MIT许可证下分发。

(返回顶部)

联系方式

项目链接:https://github.com/orbeji/phpunit-pr-coverage-check

(返回顶部)