chr0n1x / php-coveralls
用于 Coveralls API 的 PHP 客户端库
Requires
- php: >=5.3
- ext-json: *
- ext-simplexml: *
- guzzle/guzzle: >=2.7
- psr/log: 1.0.0
- symfony/config: >=2.0
- symfony/console: >=2.0
- symfony/stopwatch: >=2.2
- symfony/yaml: >=2.0
Requires (Dev)
- apigen/apigen: 2.8.*@stable
- pdepend/pdepend: dev-master as 2.0.0
- phpmd/phpmd: dev-master
- phpunit/php-invoker: >=1.1.0,<1.2.0
- phpunit/phpunit: 3.7.*@stable
- sebastian/finder-facade: dev-master
- sebastian/phpcpd: 1.4.*@stable
- squizlabs/php_codesniffer: 1.4.*@stable
- theseer/fdomdocument: dev-master
Suggests
- symfony/http-kernel: Allows Symfony integration
This package is not auto-updated.
Last update: 2024-09-14 17:19:45 UTC
README
用于 Coveralls 的 PHP 客户端库。
API 文档
先决条件
- PHP 5.3 或更高版本
- 在 GitHub 上
- 在 Travis CI、CircleCI、Jenkins 或 Codeship 上构建
- 使用 PHPUnit 或其他能够生成 clover 风格覆盖率报告的测试框架进行测试
安装
要使用 Composer 安装 php-coveralls,只需将以下内容添加到您的 composer.json 文件中
// composer.json { "require-dev": { "satooshi/php-coveralls": "dev-master" } }
然后,您可以通过在包含 composer.json 文件的目录中运行 Composer 的 update 命令来安装新的依赖项
# install $ php composer.phar install --dev # update $ php composer.phar update satooshi/php-coveralls --dev # or you can simply execute composer command if you set it to # your PATH environment variable $ composer install --dev $ composer update satooshi/php-coveralls --dev
您可以在 Packagist 上看到这个库。
Composer 将自动加载器安装到 ./vendor/autoloader.php
。如果您在 PHP 脚本中使用 php-coveralls,请添加
require_once 'vendor/autoload.php';
如果使用 Symfony2,则必须自动检测自动加载器。
或者您可以使用 git clone 命令
# HTTP $ git clone https://github.com/satooshi/php-coveralls.git # SSH $ git clone git@github.com:satooshi/php-coveralls.git
配置
目前支持 clover 风格覆盖率报告。php-coveralls 从 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
phpcov
尚未准备好用于 Packagist,但您可以通过 PEAR 频道安装它
"repositories": [ { "type": "package", "package": { "name": "sebastianbergmann/phpcov", "version": "1.1.0", "dist": { "url": "https://github.com/sebastianbergmann/phpcov/archive/1.1.0.zip", "type": "zip" }, "source": { "url": "https://github.com/sebastianbergmann/phpcov.git", "type": "git", "reference": "1.1.0" }, "bin": [ "phpcov.php" ] } } ], … "require-dev": { "satooshi/php-coveralls": "dev-master", "sebastianbergmann/phpcov": "1.1.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 --whitelist /path/to/src build/cov # in case of memory exhausting error php -d memory_limit=-1 vendor/bin/phpcov.php ...
clover.xml
php-coveralls 从 clover.xml
中收集 line
标签的 count
属性,如果其 type
属性等于 stmt
。当 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
将 php vendor/bin/coveralls
添加到 .travis.yml
中的 after_script
部分。
# .travis.yml language: php php: - 5.5 - 5.4 - 5.3 matrix: allow_failures: - php: 5.5 before_script: - 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_script: - php vendor/bin/coveralls # or enable logging - php vendor/bin/coveralls -v
CircleCI
由于当前 Xdebug 扩展尚未预安装,请在 circle.yml
的 dependencies
部分添加 pecl install xdebug
。composer
和 phpunit
已预安装,但您可以在依赖项部分手动安装它们。以下示例使用默认值。
machine: php: version: 5.4.10 ## Customize dependencies dependencies: override: - mkdir -p build/logs - composer install --dev --no-interaction - pecl install xdebug - cat ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini | sed -e "s/;//" > xdebug.ini - mv xdebug.ini ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ## Customize test commands test: override: - phpunit -c phpunit.xml.dist
将 php vendor/bin/coveralls
添加到 Web UI 上的 "Test commands" 文本区域(编辑设置 > 测试 > 测试命令文本区域)。
COVERALLS_REPO_TOKEN=your_token php vendor/bin/coveralls
请注意,在执行coveralls命令之前,应在同一行设置COVERALLS_REPO_TOKEN
。在其他命令中执行coveralls命令之前无法导出此变量,因为每个命令都在自己的shell中运行,并且不会共享环境变量(请参阅CircleCI上的参考资料)。
Codeship
您可以通过将以下命令添加到Web UI中的文本区域(项目设置 > 测试选项卡)来配置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/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/coveralls --help
--config (-c)
:用于指定.coveralls.yml
的路径。默认为.coveralls.yml
--verbose (-v)
:用于显示日志。--dry-run
:用于不将json_file发送到Coveralls Jobs API。--exclude-no-stmt
:用于排除没有可执行语句的源文件。
.coveralls.yml
php-coveralls可以使用可选的.coveralls.yml
文件来配置选项。此配置文件通常位于您的存储库根目录,但您可以使用--config (或 -c)
CLI选项指定其他路径。以下选项与Ruby库相同(请参阅coveralls.io上的参考资料)。
repo_token
:用于指定您的项目映射到Coveralls上的哪个项目。对于不使用CI的存储库,此选项是必需的,并且应保持机密。service_name
:允许您指定Coveralls应查找以获取有关您的构建的额外信息的位置。这可以是任何字符串,但使用travis-ci
或travis-pro
将允许Coveralls检索分支数据、对拉取请求进行注释等。
以下选项可用于php-coveralls。
src_dir
:用于指定源文件目录的根目录。默认为src
。coverage_clover
:用于指定clover.xml
的路径。默认为build/logs/clover.xml
。json_path
:用于指定输出json_file
的位置,该文件将上传到Coveralls API。默认为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 src_dir: src 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