前述のように、 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"
prepend.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