php - 将多个 xdebug 覆盖率结果整理到一份报告中?

标签 php xdebug

我正在使用php-code-coverage从一个 HTTP 请求(通过 apache)收集覆盖率信息。我想存储来自多个请求的覆盖率数据,然后将结果整理成一份综合报告。

这很容易做到吗?我希望得到类似的东西:

<?php
require 'PHP/CodeCoverage/Autoload.php';

$coverage = new PHP_CodeCoverage;
$coverage->start('<some request>');

// ...

$coverage->stop();

$writer = new PHP_CodeCoverage_Report_XXX;
$writer->process($coverage, '/tmp/reportYYY.xml');


// at some later date, collate all the results.
$writer = new PHP_CodeCoverage_Report_HTML;
$writer->process('/tmp/reportX.xml');
// ...
$writer->process('/tmp/reportZ.xml');

最佳答案

我已经成功使用 phpcov 来运行它(通过 Composer 安装)如上所述:

使用 Apache .htaccess 前置/附加将 PHP_CodeCoverage 对象序列化到文件的 php 脚本,您需要适当调整路径:

.htaccess:

# Prepend the file
php_value auto_prepend_file "prepend.php" 

# Append file to bottom of page
php_value auto_append_file "append.php" 

前置.php:

<?php
require_once '../vendor/autoload.php';
$coverage = new PHP_CodeCoverage;
$coverage->start('Site coverage');

append.php:

<?php

$coverage->stop();
$cov = serialize($coverage); //serialize object to disk
file_put_contents('../cov/site.' . date('U') . '.cov', $cov);

因为我正在序列化对象,所以我必须编辑/vendor/phpunit/phpcov/src/MergeCommand.php:

protected function execute(InputInterface $input, OutputInterface $output)
{
    $mergedCoverage = new PHP_CodeCoverage;

    $finder = new FinderFacade(
        array($input->getArgument('directory')),
        array(),
        array('*.cov')
    );

    foreach ($finder->findFiles() as $file) {
        print "Merging $file" . PHP_EOL;
        //$_coverage = include($file);
        $_coverage = unserialize(file_get_contents($file));
        $mergedCoverage->merge($_coverage);
        unset($_coverage);
    }

    $this->handleReports($mergedCoverage, $input, $output);
}

然后使用 phpcov 创建报告:

./vendor/bin/phpcov merge --html="./cov/report/" ./cov -vvv

关于php - 将多个 xdebug 覆盖率结果整理到一份报告中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821082/

相关文章:

php - Xdebug 永远不会在我的 Sublime Text 断点处停止

php - 如何在调用者文件之外正确调用 css 文件夹?

php - 为什么 mktime() 返回意外结果?

php - 通过Vagrant ssh调试控制台脚本

php - 如何连接 PhpStorm 和 Xdebug

php - 在VSCode中使用Docker调试PHP

php - Ajax成功函数不输出Php脚本发送的文本

如果通过身份验证,php 将回显名字

php - SQL 和 PHP : Find all "assets" connected to "presentation"

php - 如何检查配置参数是否存在?