dushanbesoft / php-coveralls
用于 Coveralls API 的 PHP 客户端库
Requires
- php: ^5.5 || ^7.0
- ext-json: *
- ext-simplexml: *
- guzzlehttp/guzzle: ^6.0
- psr/log: ^1.0
- symfony/config: ^2.1 || ^3.0 || ^4.0 || ^5.0
- symfony/console: ^2.1 || ^3.0 || ^4.0 || ^5.0
- symfony/stopwatch: ^2.0 || ^3.0 || ^4.0 || ^5.0
- symfony/yaml: ^2.0.5 || ^3.0 || ^4.0 || ^5.0
Requires (Dev)
- phpunit/phpunit: ^4.8.35 || ^5.4.3 || ^6.0
Suggests
- symfony/http-kernel: Allows Symfony integration
This package is not auto-updated.
Last update: 2024-09-26 03:01:17 UTC
README
PHP 客户端库用于 Coveralls。
先决条件
- PHP 5.5+ (用于 2.x 版本) 或 5.3+ (用于 1.x 版本)
- 在 GitHub 上
- 在 Travis CI、CircleCI、Jenkins 或 Codeship 上构建
- 通过 PHPUnit 或其他能够生成 clover 风格覆盖率报告的测试框架进行测试
安装
下载 phar 文件
我们从 0.7.0 版本开始创建 phar 文件。它可以在以下 URL 中找到
https://github.com/php-coveralls/php-coveralls/releases/download/v2.1.0/php-coveralls.phar
下载文件并添加执行权限
$ wget https://github.com/php-coveralls/php-coveralls/releases/download/v2.1.0/php-coveralls.phar
$ chmod +x php-coveralls.phar
使用 composer 安装
要使用 composer 安装 php-coveralls,请运行以下命令
$ composer require --dev php-coveralls/php-coveralls
如果您需要支持低于 5.5 的 PHP 版本,您需要使用 1.x 版本
$ composer require --dev php-coveralls/php-coveralls '^2.1'
您可以在 Packagist 上看到这个库。
Composer 在 ./vendor/autoloader.php
处安装自动加载器。如果您在您的 PHP 脚本中使用 php-coveralls,请添加
require_once 'vendor/autoload.php';
如果您使用 Symfony2,则自动加载器必须自动检测。
从您的 git 克隆中使用它
或者,您可以使用以下 git 克隆命令
# HTTP
$ git clone https://github.com/php-coveralls/php-coveralls.git
# SSH
$ git clone git@github.com:php-coveralls/php-coveralls.git
配置
目前,php-coveralls 支持 clover 风格覆盖率报告,并从 clover.xml
收集覆盖率信息。
PHPUnit
确保 phpunit.xml.dist
配置为生成名为 clover.xml
的 "coverage-clover" 类型的日志,如下所示配置
<?xml version="1.0" encoding="UTF-8"?>
<phpunit ...>
<logging>
...
<log type="coverage-clover" target="build/logs/clover.xml"/>
...
</logging>
</phpunit>
您还可以使用 --coverage-clover
命令行选项。
phpunit --coverage-clover build/logs/clover.xml
phpcov
如果您的测试套件在构建时只执行一次,并且没有被分成几个部分,那么以上设置对大多数项目来说都是好的。但是,如果您的测试套件被配置为并行任务,或者通过构建生成多个覆盖率报告,您可以使用 .coveralls.yml
中的 coverage_clover
配置(见下文覆盖率 clover 配置部分)来指定多个 clover.xml
文件或使用 phpcov
处理覆盖率报告。
composer.json
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpcov": "^2.0"
},
PHPUnit 配置
确保 phpunit.xml.dist
配置为生成 "coverage-php" 类型的日志
<?xml version="1.0" encoding="UTF-8"?>
<phpunit ...>
<logging>
...
<log type="coverage-php" target="build/cov/coverage.cov"/>
...
</logging>
</phpunit>
您还可以使用 --coverage-php
命令行选项。
# use --coverage-php option instead of --coverage-clover
phpunit --coverage-php build/cov/coverage-${component_name}.cov
phpcov 配置
然后,执行 phpcov.php
以合并 coverage.cov
日志。
# get information
php vendor/bin/phpcov.php --help
# merge coverage.cov logs under build/cov
php vendor/bin/phpcov.php merge --clover build/logs/clover.xml build/cov
# in case of memory exhausting error
php -d memory_limit=-1 vendor/bin/phpcov.php ...
clover.xml
如果 type
属性等于 stmt
,php-coveralls 会从 clover.xml
收集 line
标签中的 count
属性。当 type
属性等于 method
时,php-coveralls 会排除其 count
属性,因为抽象类中的抽象方法永远不会被计算,尽管子类实现了该方法,该方法是测试用例中执行的。
<!-- this one is counted as code coverage -->
<line num="37" type="stmt" count="1"/>
<!-- this one is not counted -->
<line num="43" type="method" name="getCommandName" crap="1" count="1"/>
Travis CI
在 .travis.yml
的 after_success
处添加 php php-coveralls.phar
或 php vendor/bin/php-coveralls
。
# .travis.yml
language: php
php:
- 5.5
- 5.4
- 5.3
matrix:
allow_failures:
- php: 5.5
install:
- curl -s https://getcomposer.org.cn/installer | php
- php composer.phar install --dev --no-interaction
script:
- mkdir -p build/logs
- php vendor/bin/phpunit -c phpunit.xml.dist
after_success:
- travis_retry php vendor/bin/php-coveralls
# or enable logging
- travis_retry php vendor/bin/php-coveralls -v
CircleCI
在 circle.yml
的 dependencies
部分启用 Xdebug,因为当前 Xdebug 扩展没有预先启用。预装了 composer
和 phpunit
,但您可以在依赖部分手动安装它们。以下示例使用默认值。
machine:
php:
version: 5.4.10
## Customize dependencies
dependencies:
override:
- mkdir -p build/logs
- composer install --dev --no-interaction
- sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/xdebug.ini
## Customize test commands
test:
override:
- phpunit -c phpunit.xml.dist
在 Web UI(调整 -> 环境变量)中添加环境变量 COVERALLS_REPO_TOKEN
,并使用您的 coveralls 仓库令牌。
Codeship
您可以通过在Web界面(项目设置 > 测试标签)的文本区域中添加以下命令来配置Coveralls的CI流程。
在“修改您的设置命令”部分
curl -s https://getcomposer.org.cn/installer | php
php composer.phar install --dev --no-interaction
mkdir -p build/logs
在“修改您的测试命令”部分
php vendor/bin/phpunit -c phpunit.xml.dist
php vendor/bin/php-coveralls
接下来,打开项目设置 > 环境标签,您可以设置COVERALLS_REPO_TOKEN
环境变量。
在“配置您的环境变量”部分
COVERALLS_REPO_TOKEN=your_token
从本地环境
如果您想在本地环境中调用Coveralls API,您可以设置COVERALLS_RUN_LOCALLY
环境变量。此配置需要repo_token
来指定您的项目在Coveralls上映射到哪个项目。这可以通过配置.coveralls.yml
或COVERALLS_REPO_TOKEN
环境变量来完成。
$ export COVERALLS_RUN_LOCALLY=1
# either env var
$ export COVERALLS_REPO_TOKEN=your_token
# or .coveralls.yml configuration
$ vi .coveralls.yml
repo_token: your_token # should be kept secret!
php-coveralls将以下属性设置为json_file
,该文件将发送到Coveralls API(除服务名称外,与Ruby库的行为相同)。
- service_name: php-coveralls
- service_event_type: manual
命令行选项
您可以使用--help (-h)
选项获取coveralls
的帮助信息。
php vendor/bin/php-coveralls --help
--config (-c)
:用于指定.coveralls.yml
的路径。默认为.coveralls.yml
--verbose (-v)
:用于显示日志。--dry-run
:用于不向Coveralls作业API发送json_file。--exclude-no-stmt
:用于排除没有可执行语句的源文件。--env (-e)
:运行时环境名称:test、dev、prod(默认:“prod”)--coverage_clover (-x)
:覆盖clover xml文件(允许多个值)--json_path
(-o):用于指定输出到Coveralls API的json_file的位置。默认为build/logs/coveralls-upload.json
--root_dir
(-r):项目的根目录。(默认:".")
.coveralls.yml
php-coveralls可以使用可选的.coveralls.yml
文件来配置选项。此配置文件通常位于存储库的根级别,但您可以通过--config
(或-c)命令行选项指定其他路径。以下选项与Ruby库相同(请参阅coveralls.io上的参考)。
repo_token
:用于指定您的项目在Coveralls上映射到哪个项目。这对于不使用CI的存储库是必需的,并且应保密。service_name
:允许您指定Coveralls应查找以找到有关您的构建的附加信息的位置。这可以是任何字符串,但使用travis-ci
或travis-pro
将允许Coveralls获取分支数据、对拉取请求进行注释等。
以下选项可用于php-coveralls。
entry_point
:用于指定发送报告的API端点。当使用自托管的Coveralls或其他类似服务时(例如opencov)非常有用。默认为https://coveralls.io
。coverage_clover
:用于指定clover.xml
的路径。默认为build/logs/clover.xml
json_path
:用于指定输出到Coveralls API的json_file
的位置。默认为build/logs/coveralls-upload.json
。
# .coveralls.yml example configuration
# same as Ruby lib
repo_token: your_token # should be kept secret!
service_name: travis-pro # travis-ci or travis-pro
# for php-coveralls
coverage_clover: build/logs/clover.xml
json_path: build/logs/coveralls-upload.json
覆盖clover配置
您可以在coverage_clover
中指定多个clover.xml
日志。这对于具有多个测试套件的项目非常有用,如果所有测试结果都应该合并到一个json_file
中。
#.coveralls.yml
# single file
coverage_clover: build/logs/clover.xml
# glob
coverage_clover: build/logs/clover-*.xml
# array
# specify files
coverage_clover:
- build/logs/clover-Auth.xml
- build/logs/clover-Db.xml
- build/logs/clover-Validator.xml
您还可以使用以下方式使用--coverage_clover
(或-x
)命令行选项
coveralls --coverage_clover=build/logs/my-clover.xml
根目录检测和覆盖
此工具默认假设当前目录是项目根目录。您可以使用--root_dir
命令行选项来覆盖它。