orbeji / phpunit-pr-coverage-check
使用PHPUnit的clover报告检查PR的代码覆盖率
1.1.0
2024-04-10 19:40 UTC
Requires
- php: ^7.2
- composer-runtime-api: ^2.2
- ext-json: *
- ext-simplexml: *
- mashape/unirest-php: ^3.0
- ptlis/diff-parser: ^1.0.2
- symfony/console: ^5.4.36
- symfony/polyfill-php83: *
- symfony/polyfill-uuid: ^1.29.0
Requires (Dev)
- nyholm/symfony-bundle-test: ^1.8.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^7.5.0
- roave/security-advisories: dev-latest
- rregeer/phpunit-coverage-check: ^0.3.1
- squizlabs/php_codesniffer: ^3.8
- symfony/framework-bundle: 5.4
- symfony/var-dumper: ^5.4
- webmozart/assert: ^1.11.0
README
Phpunit PR覆盖率检查
关于项目
灵感来自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,对于Bitbucket和GitHub,你有环境变量来知道当前和目标分支。
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
--------------- ------------
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
(返回顶部)

