經過一些實驗,這是我開發的。
首先,您需要按照文檔中所述使用PHP_CodeCoverage。覆蓋代碼分析結束後,您可以將PHP_CodeCoverage對象序列化爲臨時文件。在這裏我使用uniqid,以便對每個請求的唯一名稱。您需要的儀器您的代碼與下面的代碼片段到你的應用程序的通用腳本(請求開始,在第一部分,並在那裏結束第二部分):
require_once "phpcov/vendor/autoload.php";
$filter = new PHP_CodeCoverage_Filter();
$filter->addDirectoryToBlacklist(__DIR__ . "/phpcov");
$token = uniqid();
$coverage = new PHP_CodeCoverage(null, $filter);
$coverage->start($token);
//Do something
$coverage->stop();
$s = serialize($coverage);
file_put_contents('tmp/' . $token, $s);
當我的測試活動是finnished,我可以將所有的臨時文件合併到同一PHP_CodeCoverage_Report_HTML:
require_once "phpcov/vendor/autoload.php";
$coverage = new PHP_CodeCoverage();
$files = glob('tmp/*');
foreach($files as $file) {
$s = file_get_contents($file);
$data = unserialize($s);
$coverage->merge($data);
}
$writer = new PHP_CodeCoverage_Report_HTML;
$writer->process($coverage, 'report-coverage');
不要忘記設置PHP_CodeCoverage_Filter,以消除你的框架中所有不需要的腳本和許多圖書館,你可以使用。
如果您正在使用笨,你可以依靠的鉤子,像我一樣的my project。