不使用 phpunit 获取覆盖率报告

Get coverage report without phpunit

我在从 phpunit/php-code-coverage 获取覆盖率报告时遇到问题。

当我这样做时:

xdebug_start_code_coverage();
// code
print_r(xdebug_get_code_coverage());

我得到了预期的覆盖信息。我决定使用 phpunit/php-code-coverage 来处理结果的导出。我正在尝试按照存储库中的建议使用:

$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage;
$coverage->start();
// code
$coverage->stop();
$writer = new \SebastianBergmann\CodeCoverage\Report\Clover;
$writer->process($coverage, '/tmp/clover.xml');

那么结果是空的。当我使用 xdebug_get_code_coverage() 查看是否有一些结果时,也是空的。如果我删除 $coverage->stop() 我会得到结果,但只是使用 xdebug_get_code_coverage() 函数,而不是包。 我不知道我是否必须做一些不同的事情才能让它工作。

需要一个额外的步骤。将要覆盖的文件添加到白名单。

$driver = \SebastianBergmann\CodeCoverage\Driver\Xdebug;
$filter = new \SebastianBergmann\CodeCoverage\Filter;
$filter->addDirectoryToWhitelist('/directory');
$coverage = new \SebastianBergmann\CodeCoverage\CodeCoverage($driver, $filter);
$coverage->start();
// code
$coverage->stop();
$writer = new \SebastianBergmann\CodeCoverage\Report\Clover;
$writer->process($coverage, '/tmp/clover.xml');