kylekatarnls-codeclimate / php-test-reporter
PHP 测试覆盖率报告客户端,用于向 Code Climate 报告
资助包维护!
kylekatarnls
Open Collective
Tidelift
Requires
- php: >=5.3
- ext-curl: *
- padraic/phar-updater: ^1.0
- psr/log: ^1.0
- satooshi/php-coveralls: ^1.0
- symfony/console: ^2.0|^3.0
Requires (Dev)
- ext-xdebug: *
- phpunit/phpunit: 3.7.*@stable
- tm/tooly-composer-script: ^1.0
This package is auto-updated.
Last update: 2024-09-17 16:50:30 UTC
README
codeclimate-test-reporter
从您的 PHP 测试套件中收集测试覆盖率数据并发送到 Code Climate 的托管自动化代码审查服务。
Code Climate - https://codeclimate.com
重要:如果您遇到涉及 SSL 证书的错误,请参阅下面的 已知问题:SSL 证书错误 部分。
重要提示
在许多不同的测试框架、配置和环境中,有很多变量在起作用。在设置测试覆盖率之前,了解我们目前支持和不支持的内容非常重要。
-
单个有效负载:我们目前只支持每个提交的单个测试覆盖率有效负载。如果您分多步运行测试或通过并行测试,Code Climate 只会处理我们收到的第一个有效负载。如果您使用 CI,请确保您的测试是以并行模式运行的。
注意:有一个例外。我们专门与 Solano Labs 建立了集成,以支持并行测试。
注意:如果您已将 Code Climate 配置为分析同一存储库中的多种语言(例如,Ruby 和 JavaScript),我们仍然只能处理这些语言中的一种的测试覆盖率信息。我们将处理我们收到的第一个有效负载。
-
无效的文件路径:默认情况下,我们的测试报告器期望您的应用程序位于存储库的根目录下。如果不是这样,您的测试覆盖率有效负载中的文件路径将不会与 Code Climate 期望的文件路径匹配。
要求
为了在您的系统上使用 PHP 测试报告器,您需要满足以下要求:
测试报告器使用 PHPUnit 测试工具生成 代码覆盖率 信息。这些结果显示了您的应用程序代码中有多少是通过单元测试执行的。然而,PHPUnit 本身无法生成这些信息 - 它需要一个其他工具,即 Xdebug。这个工具不是作为 PHPUnit(或 PHP)安装的一部分提供的,因此您需要自行安装它。
Xdebug 是作为 PHP 的扩展而不是库安装的。您可以在项目网站上找到有关通过 PECL 安装此工具 的更多信息。
如果您使用 --coverage-clover
选项执行 PHPUnit 测试并收到消息 "The Xdebug extension is not loaded. No code coverage will be generated.",您需要访问 Xdebug 网站并安装扩展。如果不这样做,您很可能会遇到类似以下错误的错误
PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "[...]/build/logs/clover.xml" in [...]/vendor/satooshi/php-coveralls/src/Contrib/Bundle/CoverallsV1Bundle/Api/Jobs.php on line 52
安装
此软件包需要Code Climate上的用户,但不一定是付费账户,因此如果您还没有,第一步是前往以下链接注册: https://codeclimate.com。
通过Composer
要使用Composer安装php-test-reporter,请运行以下命令。
$ composer require codeclimate/php-test-reporter --dev
这将获取最新的报告版本并安装。如果您想要未标记的master版本,可以使用以下命令
$ composer require codeclimate/php-test-reporter:@dev --dev
作为PHAR工具
在此处检查最新发布版本,并将X.X.X
替换为最新版本。
$ RELEASE=X.X.X
$ wget -c "https://github.com/codeclimate/php-test-reporter/releases/download/$RELEASE/codeclimate-test-reporter.phar"
使用方法
- 生成覆盖率数据到
build/logs/clover.xml
将以下内容添加到phpunit.xml.dist中
<?xml version="1.0" encoding="UTF-8"?> <phpunit ...> <logging> ... <log type="coverage-clover" target="build/logs/clover.xml"/> ... </logging> </phpunit>
或按以下方式调用phpunit
$ phpunit --coverage-clover build/logs/clover.xml
- 指定您的repo令牌作为环境变量,调用测试报告器
$ CODECLIMATE_REPO_TOKEN="..." vendor/bin/test-reporter # ... or via PHAR ... $ CODECLIMATE_REPO_TOKEN="..." codeclimate-test-reporter.phar upload
在您的Code Climate账户中添加您的仓库后,通过点击“设置测试覆盖率”侧边栏上的按钮,可以获得CODECLIMATE_REPO_TOKEN
值。
如果您在设置此内容时需要任何帮助,请联系hello@codeclimate.com。
故障排除
如果您在设置或使用我们的测试覆盖率功能时遇到问题,请参阅我们的详细帮助文档,它涵盖了遇到的最常见问题。
已知问题:SSL证书错误
如果您在尝试从CI服务器报告覆盖率数据时遇到涉及SSL证书的错误,可以通过手动通过curl
发布数据来解决这个问题。
after_script: - CODECLIMATE_REPO_TOKEN="..." bin/test-reporter --stdout > codeclimate.json - "curl -X POST -d @codeclimate.json -H 'Content-Type: application/json' -H 'User-Agent: Code Climate (PHP Test Reporter v0.1.1)' https://codeclimate.com/test_reports"
注意:在上面的命令中,您可能需要根据您的项目目录结构将bin/test-reporter
更改为vendor/bin/test-reporter
。
更多详细信息可以在此问题中找到。
贡献
欢迎在GitHub页面提交此项目的补丁、错误修复、功能请求和拉取请求。
https://github.com/codeclimate/php-test-reporter
此软件包由Bryan Helmkamp维护(bryan@codeclimate.com)。
有关更多详细信息,请参阅CONTRIBUTING.md
。
版权
请参阅LICENSE.txt
实现的部分灵感来自php-coveralls项目。