Generating Code Coverage reports allows you to to analyze which parts of your codebase are tested and how well. However, Code Coverage alone should NOT be used as a single metric defining how good your tests are.
- PHP 7+ (for PhpSpec v4+) or PHP 5.6+ (for PhpSpec v3)
- Xdebug, phpdbg or pcov extension enabled (PHP 7+ is required for code generation to work with phpdbg).
Please see CHANGELOG.md for information on recent changes.
Install this package as a development dependency in your project:
$ composer require --dev friends-of-phpspec/phpspec-code-coverage
Enable extension by editing
phpspec.yml of your project:
extensions: FriendsOfPhpSpec\PhpSpec\CodeCoverage\CodeCoverageExtension: ~
This will sufficient to enable Code Coverage generation by using defaults provided by the extension. This extension supports various configuration options. For a fully annotated example configuration file check Configuration section.
If you execute
phpspec run command, you will see code coverage generated in
coverage directory (in
$ bin/phpspec run
Note! When generating Code Coverage reports make sure PHP processes run via
CLI are not memory limited (i.e.
memory_limit set to
Running with phpdbg
$ phpdbg -qrr phpspec run
Note! PHP 7+ is required for code generation to work with phpdbg.
You can see fully annotated
phpspec.yml example file below, which can be used
as a starting point to further customize the defaults of the extension. The
configuration file below has all of the Configuration Options.
# phpspec.yml # ... extensions: # ... other extensions ... # friends-of-phpspec/phpspec-code-coverage FriendsOfPhpSpec\PhpSpec\CodeCoverage\CodeCoverageExtension: # Specify a list of formats in which code coverage report should be # generated. # Default: [html] format: - text - html #- clover #- php #- xml # # Specify output file/directory where code coverage report will be # generated. You can configure different output file/directory per # enabled format. # Default: coverage output: html: coverage #clover: coverage.xml #php: coverage.php #xml: coverage # # Should uncovered files be included in the reports? # Default: true #show_uncovered_files: true # # Set lower upper bound for code coverage # Default: 35 #lower_upper_bound: 35 # # Set high lower bound for code coverage # Default: 70 #high_lower_bound: 70 # # Whilelist directories for which code generation should be done # Default: [src, lib] # whitelist: - src - lib # # Whiltelist files for which code generation should be done # Default: empty #whilelist_files: #- app/bootstrap.php #- web/index.php # # Blacklist directories for which code generation should NOT be done #blacklist: #- src/legacy # # Blacklist files for which code generation should NOT be done #blacklist_files: #- lib/bootstrap.php
format(optional) a list of formats in which code coverage should be generated. Can be one or many of:
html) Note: When using
cloverformat option, you have to configure specific
outputfile for the
cloverformat (see below).
output(optional) sets an output file/directory where specific code coverage format will be generated. If you configure multiple formats, takes a hash of
show_uncovered_files(optional) for including uncovered files in coverage reports (default
lower_upper_bound(optional) sets lower upper bound for code coverage (default
high_lower_bound(optional) sets high lower bound for code coverage (default
whitelisttakes an array of directories to whitelist (default:
whitelist_filestakes an array of files to whitelist (default: none).
blacklisttakes an array of directories to blacklist (default:
test, vendor, spec)
blacklist_filestakes an array of files to blacklist
Copyright (c) 2013-2016 Henrik Bjornskov, for portions of code from henrikbjorn/phpspec-code-coverage project.
Licensed under MIT License.