Add this package as a dependency:
composer require --dev peridot-php/peridot-code-coverage-reporters
Then register the reporters in your peridot.php
configuration:
use Evenement\EventEmitterInterface;
use Peridot\Reporter\CodeCoverage\CodeCoverageReporter;
use Peridot\Reporter\CodeCoverageReporters;
return function (EventEmitterInterface $emitter) {
$coverage = new CodeCoverageReporters($emitter);
$coverage->register();
$emitter->on('code-coverage.start', function (CodeCoverageReporter $reporter) {
$reporter->addDirectoryToWhitelist(__DIR__ . '/src');
});
};
This package provides several Peridot reporters that can be used via the
--reporter
option:
html-code-coverage
text-code-coverage
clover-code-coverage
xml-code-coverage
crap4j-code-coverage
php-code-coverage
These reporters are all driven by php-code-coverage, which requires the use of
either the phpdbg
executable, or the xdebug
PHP extension in order to
produce coverage reports.
Where available, phpdbg
is generally recommended for faster coverage
reporting. Most system-level package management tools should be able to install
a version of phpdbg
with minimal hassle. Under Homebrew, for example,
phpdbg
can be installed like so:
brew tap homebrew/homebrew-php && brew install php71 --with-phpdbg
Once installed, phpdbg -qrr
can be used in place of php
when executing
scripts, including the peridot
binary, allowing code coverage to be generated:
phpdbr -qrr vendor/bin/peridot --reporter spec --reporter html-code-coverage
The above command will print spec-style output while the suite runs, and generate an HTML coverage report once the suite has completed.
Use of xdebug
is no longer recommended, because of the significantly worse
performance compared to phpdbg
. If phpdbg
is not an option, simply make sure
the xdebug
extension is enabled when running peridot
:
vendor/bin/peridot --reporter spec --reporter html-code-coverage
The above command will print spec-style output while the suite runs, and generate an HTML coverage report once the suite has completed.