Peridot Code Coverage Reporters
, (*1)
Installation
Add this package as a dependency:, (*2)
composer require --dev peridot-php/peridot-code-coverage-reporters
Then register the reporters in your peridot.php
configuration:, (*3)
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');
});
};
Usage
This package provides several Peridot reporters that can be used via the
--reporter
option:, (*4)
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., (*5)
With phpdbg
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:, (*6)
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:, (*7)
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., (*8)
With xdebug
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
:, (*9)
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., (*10)