All notable changes are documented in this file using the Keep a CHANGELOG principles.
10.0.0 - 2023-02-03
- #556: Make colors in HTML report configurable
- The path to
custom.css
for the HTML report can now be configured
- #856: Do not include (and execute) uncovered files
- The deprecated methods
SebastianBergmann\CodeCoverage\Driver::forLineCoverage()
andSebastianBergmann\CodeCoverage\Driver::forLineAndPathCoverage()
have been removed - This component is no longer supported on PHP 7.3, PHP 7.4 and PHP 8.0
- This component no longer supports PHPDBG
- This component no longer supports Xdebug 2
9.2.24 - 2023-01-26
- #970: CSS and JavaScript assets are now referenced using
?v=%s
URLs in the HTML report to avoid cache issues
9.2.23 - 2022-12-28
- #971: PHP report does not handle serialized code coverage data larger than 2 GB
- #974: Executable line analysis fails for declarations with enumerations and unions
9.2.22 - 2022-12-18
- #969: Fixed identifying line with
throw
as executable
9.2.21 - 2022-12-14
- #964: Changed how executable lines are identified
9.2.20 - 2022-12-13
- #960: New body font-size is way too big
9.2.19 - 2022-11-18
- #949: Various issues related to identifying executable lines
- Tweaked CSS for HTML report
- Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.6.2 and jQuery 3.6.1
9.2.18 - 2022-10-27
- #935: Cobertura package name attribute is always empty
- #946:
return
with multiline constant expression must only contain the last line
9.2.17 - 2022-08-30
- #928: Avoid unnecessary
is_file()
calls - #931: Use MD5 instead of CRC32 for static analysis cache file identifier
- #926: Static Analysis cache does not work with
open_basedir
9.2.16 - 2022-08-20
- #926: File view has wrong colouring for the first column
9.2.15 - 2022-03-07
- #885: Files that have only
\r
(CR, 0x0d) EOL characters are not handled correctly - #907: Line with only
return [
is not recognized as executable
9.2.14 - 2022-02-28
- #904: Lines of code containing the
match
keyword were not recognized as executable correctly - #905: Lines of code in constructors were not recognized as executable correctly when constructor property promotion is used
9.2.13 - 2022-02-23
- The contents of the static analysis sourcecode files is now used to generate the static analysis cache version identifier
- Reverted rename of
SebastianBergmann\CodeCoverage\ProcessedCodeCoverageData
toSebastianBergmann\CodeCoverage\Data\ProcessedCodeCoverageData
(this class is marked as@internal
and not covered by the backward compatibility promise, but it is (still) used directly by PHPUnit) - Reverted rename of
SebastianBergmann\CodeCoverage\RawCodeCoverageData
toSebastianBergmann\CodeCoverage\Data\RawCodeCoverageData
(this class is marked as@internal
and not covered by the backward compatibility promise, but it is (still) used directly by PHPUnit) - The
ArrayDim
,Cast
, andMethodCall
nodes are now considered when determining whether a line of code is executable or not
9.2.12 - 2022-02-23 [YANKED]
- #898: Use content hash instead of
filemtime()
to determine cache hit/miss
- #736: HTML report generator allows invalid values for low upper bound and high lower bound
- #854: "Class Coverage Distribution" and "Class Complexity" graphs are not displayed at full width
- #897:
declare(strict_types=1)
marked as uncovered
9.2.11 - 2022-02-18
CoveredFileAnalyser
andUncoveredFileAnalyser
have been combined toFileAnalyser
- Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.6.1, jQuery 3.6.0, and popper.js 1.16.1
- #889: Code Coverage depends on autoload order
9.2.10 - 2021-12-05
- #887: Document return type of
CodeUnitFindingVisitor::enterNode()
so that Symfony's DebugClassLoader does not trigger a deprecation warning
9.2.9 - 2021-11-19
- #882: PHPUnit 9.2.8 has wrong version number
9.2.8 - 2021-10-30
- #866:
CodeUnitFindingVisitor
does not handleenum
type introduced in PHP 8.1 - #868: Uncovered files should be ignored unless requested
- #876: PCOV driver causes 2x slowdown after upgrade to PHPUnit 9.5
9.2.7 - 2021-09-17
- #860: Empty value for
XDEBUG_MODE
environment variable is not handled correctly
9.2.6 - 2021-03-28
- #846: Method name should not appear in the method signature attribute of Cobertura XML
9.2.5 - 2020-11-28
- #831: Files that do not contain a newline are not handled correctly
9.2.4 - 2020-11-27
- #834: Support
XDEBUG_MODE
environment variable
9.2.3 - 2020-10-30
- Bumped required version of
nikic/php-parser
9.2.2 - 2020-10-28
- #820: Hidden dependency on PHPUnit
9.2.1 - 2020-10-26
SebastianBergmann\CodeCoverage\Exception
now correctly extends\Throwable
9.2.0 - 2020-10-02
- #812: Support for Cobertura XML report format
- Reduced the number of I/O operations performed by the static analysis cache
9.1.11 - 2020-09-19
- #811:
T_FN
constant is used on PHP 7.3 where it is not available
9.1.10 - 2020-09-18
SebastianBergmann\CodeCoverage\Driver\Selector::forLineCoverage()
andSebastianBergmann\CodeCoverage\Driver\Selector::forLineAndPathCoverage()
have been added
- #810:
SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()
andSebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()
are marked as internal
SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()
andSebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()
are now deprecated
9.1.9 - 2020-09-15
- #808:
PHP Warning: Use of undefined constant T_MATCH
9.1.8 - 2020-09-07
- #800: All files on the inclusion list are no longer loaded when
SebastianBergmann\CodeCoverage::start()
is called for the first time andprocessUncoveredFiles
is set totrue
- #799: Uncovered new line at end of file
9.1.7 - 2020-09-03
- Fixed regressions introduced in versions 9.1.5 and 9.1.6
9.1.6 - 2020-08-31
- #799: Uncovered new line at end of file
- #803: HTML report does not sort directories and files anymore
9.1.5 - 2020-08-27
- #800: All files on the inclusion list are no longer loaded when
SebastianBergmann\CodeCoverage::start()
is called for the first time andprocessUncoveredFiles
is set totrue
- #797: Class name is wrongly removed from namespace name
9.1.4 - 2020-08-13
- #793: Lines with
::class
constant are not covered
9.1.3 - 2020-08-10
- Changed PHP-Parser usage to parse sourcecode according to the PHP version we are currently running on instead of using emulative lexing
9.1.2 - 2020-08-10
- #791: Cache Warmer does not warm all caches
9.1.1 - 2020-08-10
- Added
SebastianBergmann\CodeCoverage::cacheDirectory()
method for querying where the cache writes its files
9.1.0 - 2020-08-10
- Implemented a persistent cache for information gathered using PHP-Parser based static analysis (hereinafter referred to as "cache")
- Added
SebastianBergmann\CodeCoverage::cacheStaticAnalysis(string $cacheDirectory)
method for enabling the cache; it will write its files to$directory
- Added
SebastianBergmann\CodeCoverage::doNotCacheStaticAnalysis
method for disabling the cache - Added
SebastianBergmann\CodeCoverage::cachesStaticAnalysis()
method for querying whether the cache is enabled - Added
SebastianBergmann\CodeCoverage\StaticAnalysis\CacheWarmer::warmCache()
method for warming the cache
9.0.0 - 2020-08-07
- #761: Support for Branch Coverage and Path Coverage
- Added
SebastianBergmann\CodeCoverage\Driver\Driver::forLineCoverage()
for selecting the best available driver for line coverage - Added
SebastianBergmann\CodeCoverage\Driver\Driver::forLineAndPathCoverage()
for selecting the best available driver for path coverage - This component is now supported on PHP 8
- This component now supports Xdebug 3
- #746: Remove some ancient workarounds for very old Xdebug versions
- #747: Use native filtering in PCOV and Xdebug drivers
- #748: Store raw code coverage in value objects instead of arrays
- #749: Store processed code coverage in value objects instead of arrays
- #752: Rework how code coverage settings are propagated to the driver
- #754: Implement collection of raw branch and path coverage
- #755: Implement processing of raw branch and path coverage
- #756: Improve handling of uncovered files
SebastianBergmann\CodeCoverage\Filter::addDirectoryToWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::includeDirectory()
SebastianBergmann\CodeCoverage\Filter::addFilesToWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::includeFiles()
SebastianBergmann\CodeCoverage\Filter::addFileToWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::includeFile()
SebastianBergmann\CodeCoverage\Filter::removeDirectoryFromWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::excludeDirectory()
SebastianBergmann\CodeCoverage\Filter::removeFileFromWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::excludeFile()
SebastianBergmann\CodeCoverage\Filter::isFiltered()
has been renamed toSebastianBergmann\CodeCoverage\Filter::isExcluded()
SebastianBergmann\CodeCoverage\Filter::getWhitelist()
has been renamed toSebastianBergmann\CodeCoverage\Filter::files()
- The arguments for
CodeCoverage::__construct()
are no longer optional
- #700: Throw an exception if code coverage fails to write to disk
SebastianBergmann\CodeCoverage\CodeCoverage::setCacheTokens()
andSebastianBergmann\CodeCoverage\CodeCoverage::getCacheTokens()
have been removedSebastianBergmann\CodeCoverage\CodeCoverage::setCheckForUnintentionallyCoveredCode()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::enableCheckForUnintentionallyCoveredCode()
orSebastianBergmann\CodeCoverage\CodeCoverage::disableCheckForUnintentionallyCoveredCode()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setSubclassesExcludedFromUnintentionallyCoveredCodeCheck()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::excludeSubclassesOfThisClassFromUnintentionallyCoveredCodeCheck()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setAddUncoveredFilesFromWhitelist()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::includeUncoveredFiles()
orSebastianBergmann\CodeCoverage\CodeCoverage::excludeUncoveredFiles()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setProcessUncoveredFiles()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::processUncoveredFiles()
orSebastianBergmann\CodeCoverage\CodeCoverage::doNotProcessUncoveredFiles()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setIgnoreDeprecatedCode()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::ignoreDeprecatedCode()
orSebastianBergmann\CodeCoverage\CodeCoverage::doNotIgnoreDeprecatedCode()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setDisableIgnoredLines()
has been removed, please useSebastianBergmann\CodeCoverage\CodeCoverage::enableAnnotationsForIgnoringCode()
orSebastianBergmann\CodeCoverage\CodeCoverage::disableAnnotationsForIgnoringCode()
insteadSebastianBergmann\CodeCoverage\CodeCoverage::setCheckForMissingCoversAnnotation()
has been removedSebastianBergmann\CodeCoverage\CodeCoverage::setCheckForUnexecutedCoveredCode()
has been removedSebastianBergmann\CodeCoverage\CodeCoverage::setForceCoversAnnotation()
has been removedSebastianBergmann\CodeCoverage\Filter::hasWhitelist()
has been removed, please useSebastianBergmann\CodeCoverage\Filter::isEmpty()
insteadSebastianBergmann\CodeCoverage\Filter::getWhitelistedFiles()
has been removedSebastianBergmann\CodeCoverage\Filter::setWhitelistedFiles()
has been removed
8.0.2 - 2020-05-23
- #750: Inconsistent handling of namespaces
- #751: Dead code is not highlighted correctly
- #753: Do not use
$_SERVER['REQUEST_TIME']
because the test(ed) code might unset it
8.0.1 - 2020-02-19
- #731: Confusing footer in the HTML report
8.0.0 - 2020-02-07
- This component is no longer supported on PHP 7.2
7.0.15 - 2021-07-26
- Bumped required version of php-token-stream
7.0.14 - 2020-12-02
- #837: Allow version 4 of php-token-stream
7.0.13 - 2020-11-30
- Changed PHP version constraint in
composer.json
from^7.2
to>=7.2
to allow installation of this version of this library on PHP 8. However, this version of this library does not work on PHP 8. PHPUnit 8.5, which uses this version of this library, does not call into this library and instead shows a message that code coverage functionality is not available for PHPUnit 8.5 on PHP 8.
7.0.12 - 2020-11-27
- #834: Support
XDEBUG_MODE
environment variable
7.0.11 - 2020-11-27
- Support for Xdebug 3
7.0.10 - 2019-11-20
- #710: Code Coverage does not work in PhpStorm
7.0.9 - 2019-11-20
- #709: Prioritize PCOV over Xdebug
7.0.8 - 2019-09-17
- Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.3.1, jQuery 3.4.1, and popper.js 1.15.0
7.0.7 - 2019-07-25
- Bumped required version of php-token-stream
7.0.6 - 2019-07-08
- Bumped required version of php-token-stream
7.0.5 - 2019-06-06
- #681:
use function
statements are not ignored
7.0.4 - 2019-05-29
- #682: Code that is not executed is reported as being executed when using PCOV
7.0.3 - 2019-02-26
- #671:
TypeError
when directory name is a number
7.0.2 - 2019-02-15
- Updated bundled CSS/JavaScript components used for HTML report: Bootstrap 4.3.0
- #667:
TypeError
in PHP reporter
7.0.1 - 2019-02-01
- #664:
TypeError
when whitelisted file does not exist
7.0.0 - 2019-02-01
- #663: Support for PCOV
- This component is no longer supported on PHP 7.1