Change Log

gcovr Release History and Change Log

4.0 (17 July 2018)

Breaking changes:

  • This release drops support for Python 2.6. (#250)
  • PIP is the only supported installation method.
  • No longer encoding-agnostic under Python 2.7. If your source files do not use the system encoding (probably UTF-8), you will have to specify a –source-encoding. (#148, #156, #256)
  • Filters now use forward slashes as path separators, even on Windows. (#191, #257)
  • Filters are no longer normalized into pseudo-paths. This could change the interpretation of filters in some edge cases.

Improvements and new features:

  • Improved –help output. (#236)
  • Parse the GCC 8 gcov format. (#226, #228)
  • New –source-encoding option, which fixes decoding under Python 3. (#256)
  • New –gcov-ignore-parse-errors flag. By default, gcovr will now abort upon parse errors. (#228)
  • Detect the error when gcov cannot create its output files (#243, #244)
  • Add -j flag to run gcov processes in parallel. (#3, #36, #239)
  • The –html-details flag now implies –html. (#93, #211)
  • The –html output can now be used without an –output filename (#223)
  • The docs are now managed with Sphinx. (#235, #248, #249, #252, #253)
  • New –html-title option to change the title of the HTML report. (#261, #263)
  • New options –html-medium-threshold and –html-high-threshold to customize the color legend. (#261, #264)

Internal changes:

3.4 (12 February 2018)

  • Added –html-encoding command line option (#139).
  • Added –fail-under-line and –fail-under-branch options, which will error under a given minimum coverage. (#173, #116)
  • Better pathname resolution heuristics for –use-gcov-file. (#146)
  • The –root option defaults to current directory ‘.’.
  • Improved reports for “(“, “)”, “;” lines.
  • HTML reports show full timestamp, not just date. (#165)
  • HTML reports treat 0/0 coverage as NaN, not 100% or 0%. (#105, #149, #196)
  • Add support for coverage-04.dtd Cobertura XML format (#164, #186)
  • Only Python 2.6+ is supported, with 2.7+ or 3.4+ recommended. (#195)
  • Added CI testing for Windows using Appveyor. (#189, #200)
  • Reports use forward slashes in paths, even on Windows. (#200)
  • Fix to support filtering with absolute paths.
  • Fix HTML generation with Python 3. (#168, #182, #163)
  • Fix –html-details under Windows. (#157)
  • Fix filters under Windows. (#158)
  • Fix verbose output when using existing gcov files (#143, #144)

3.3 (6 August 2016)

  • Added CI testing using TravisCI
  • Added more tests for out of source builds and other nested builds
  • Avoid common file prefixes in HTML output (#103)
  • Added the –execlude-directories argument to exclude directories from the search for symlinks (#87)
  • Added branches taken/not taken to HTML (#75)
  • Use –object-directory to scan for gcov data files (#72)
  • Improved logic for nested makefiles (#135)
  • Fixed unexpected semantics with –root argument (#108)
  • More careful checks for covered lines (#109)

3.2 (5 July 2014)

  • Adding a test for out of source builds
  • Using the starting directory when processing gcov filenames. (#42)
  • Making relative paths the default in html output.
  • Simplify html bar with coverage is zero.
  • Add option for using existing gcov files (#35)
  • Fixing –root argument processing (#27)
  • Adding logic to cover branches that are ignored (#28)

3.1 (6 December 2013)

  • Change to make the -r/–root options define the root directory for source files.
  • Fix to apply the -p option when the –html option is used.
  • Adding new option, ‘–exclude-unreachable-branches’ that will exclude branches in certain lines from coverage report.
  • Simplifying and standardizing the processing of linked files.
  • Adding tests for deeply nested code, and symbolic links.
  • Add support for multiple —filter options in same manner as —exclude option.

3.0 (10 August 2013)

  • Adding the ‘–gcov-executable’ option to specify the name/location of the gcov executable. The command line option overrides the environment variable, which overrides the default ‘gcov’.
  • Adding an empty “<methods/>” block to <classes/> in the XML output: this makes out XML complient with the Cobertura DTD. (#3951)
  • Allow the GCOV environment variable to override the default ‘gcov’ executable. The default is to search the PATH for ‘gcov’ if the GCOV environment variable is not set. (#3950)
  • Adding support for LCOV-style flags for excluding certain lines from coverage analysis. (#3942)
  • Setup additional logic to test with Python 2.5.
  • Added the –html and –html-details options to generate HTML.
  • Sort output for XML to facilitate baseline tests.
  • Added error when the –object-directory option specifies a bad directory.
  • Added more flexible XML testing, which can ignore XML elements that frequently change (e.g. timestamps).
  • Added the ‘—xml-pretty’ option, which is used to generate pretty XML output for the user manual.
  • Many documentation updates

2.4 (13 April 2012)

  • New approach to walking the directory tree that is more robust to symbolic links (#3908)
  • Normalize all reported path names
    • Normalize using the full absolute path (#3921)
    • Attempt to resolve files referenced through symlinks to a common project-relative path
  • Process gcno files when there is no corresponding gcda file to provide coverage information for unexecuted modules (#3887)
  • Windows compatibility fixes
    • Fix for how we parse source: file names (#3913)
    • Better handling od EOL indicators (#3920)
  • Fix so that gcovr cleans up all .gcov files, even those filtered by command line arguments
  • Added compatibility with GCC 4.8 (#3918)
  • Added a check to warn users who specify an empty --root option (see #3917)
  • Force gcov to run with en_US localization, so the gcovr parser runs correctly on systems with non-English locales (#3898, #3902).
  • Segregate warning/error information onto the stderr stream (#3924)
  • Miscellaneous (Python 3.x) portability fixes
  • Added the master svn revision number as part of the verson identifier

2.3.1 (6 January 2012)

  • Adding support for Python 3.x

2.3 (11 December 2011)

  • Adding the --gcov-filter and --gcov-exclude options.

2.2 (10 December 2011)

  • Added a test driver for gcovr.
  • Improved estimation of the <sources> element when using gcovr with filters.
  • Added revision and date keywords to gcovr so it is easier to identify what version of the script users are using (especially when they are running a snapshot from trunk).
  • Addressed special case mentioned in [comment:ticket:3884:1]: do not truncate the reported file name if the filter does not start matching at the beginning of the string.
  • Overhaul of the --root / --filter logic. This should resolve the issue raised in #3884, along with the more general filter issue raised in [comment:ticket:3884:1]
  • Overhaul of gcovr’s logic for determining gcc/g++’s original working directory. This resolves issues introduced in the original implementation of --object-directory (#3872, #3883).
  • Bugfix: gcovr was only including a <sources> element in the XML report if the user specified -r (#3869)
  • Adding timestamp and version attributes to the gcovr XML report (see #3877). It looks like the standard Cobertura output reports number of seconds since the epoch for the timestamp and a doted decimal version string. Now, gcovr reports seconds since the epoch and “gcovr ``"+``__version__ (e.g. “gcovr 2.2”) to differentiate it from a pure Cobertura report.

2.1 (26 November 2010)

  • Added the --object-directory option, which allows for a flexible specification of the directory that contains the objects generated by gcov.

  • Adding fix to compare the absolute path of a filename to an exclusion pattern.

  • Adding error checking when no coverage results are found. The line and branch counts can be zero.

  • Adding logic to process the -o/--output option (#3870).

  • Adding patch to scan for lines that look like:

    creating `foo'

    as well as

    creating 'foo'
  • Changing the semantics for EOL to be portable for MS Windows.

  • Add attributes to xml format so that it could be used by hudson/bamboo with cobertura plug-in.

2.0 (22 August 2010)

  • Initial release as a separate package. Earlier versions of gcovr were managed within the ‘fast’ Python package.