首先安装PHPUnit及相关覆盖率工具,配置phpunit.xml生成Clover报告,再通过.coveralls.yml或Codecov Bash上传器在CI中自动提交覆盖率数据至Coveralls或Codecov服务。

在开发PHP包时,代码覆盖率是衡量测试完整性的重要指标。通过将Codecov或Coveralls集成到Composer工作流中,你可以自动上传测试覆盖率数据,提升项目的可维护性和可信度。下面是如何为你的Composer包配置这一流程。
安装必要的开发依赖
要生成和上传覆盖率报告,你需要先安装PHPUnit以及对应的工具来处理覆盖率数据。
运行以下命令添加所需依赖:
- composer require --dev phpunit/phpunit(如果你还没安装)
- composer require --dev php-code-coverage(通常随PHPUnit一起安装)
- 若使用Coveralls,还需:composer require --dev php-coveralls/php-coveralls
- 若使用Codecov,则推荐使用官方Bash上传器,无需PHP依赖
配置PHPUnit生成覆盖率报告
在项目根目录的phpunit.xml或phpunit.xml.dist中启用覆盖率输出。
示例配置:
src/
这会生成Clover格式的覆盖率文件,被Coveralls和Codecov共同支持。
集成 Coveralls
安装完php-coveralls后,在项目根目录创建.coveralls.yml:
service_name: github-actions src_dir: src coverage_clover: build/logs/clover.xml
然后在CI流程(如GitHub Actions)中添加步骤:
- php vendor/bin/phpunit --coverage-clover build/logs/clover.xml
- php vendor/bin/php-coveralls -v
确保已设置COVERALLS_REPO_TOKEN环境变量(私有仓库需要)。
集成 Codecov
Codecov更简单,不需要PHP库。只需上传由PHPUnit生成的Clover文件即可。
在CI中执行:
- php vendor/bin/phpunit --coverage-clover build/logs/clover.xml
- 下载并运行Codecov Bash上传器:
curl -s https://codecov.io/bash | bash
它会自动查找build/logs/clover.xml并上传。你也可以通过codecov.yml进一步配置行为。
基本上就这些。只要CI每次运行测试时生成覆盖率报告,并通过脚本上传,你的README就可以加上漂亮的Badge展示当前覆盖率状态了。不复杂但容易忽略细节,比如路径配置或CI权限问题,注意检查日志输出即可。










