Bullseye Testing Technology


Version 9.10 Released June 2024

We added Cobertura format XML as an option to the covxml command.

Version 9.9 Released April 2024

We enhanced source code annotation in the BullseyeCoverage Browser as well as the HTML report. A new notation for coverage events clarifies exactly what code is covered and what is uncovered. Source code highlighting provides even more visual feedback. These changes improve workflow productivity for engineers and testers performing detailed testing.

Version 9.7 Released March 2024

This is a minor update. We improved handling of GCC and Clang precompiled headers.

Version 9.6 Released December 2023

BullseyeCoverage automatically excludes external headers specified with the Microsoft C++ /external options and GCC -isystem option.

Version 9.5 Released August 2023

We added an option to omit annotated source files from our HTML report. If you do not need that level of detail, this option reduces the time and space required to generate the report.

Version 9.4 Released May 2023

BullseyeCoverage always measures coverage of constant conditions and decisions as well as switch statements with a constant controlling expression. This new behavior agrees with widely accepted definitions of code coverage criteria, including those specified by safety standards.

Version 9.3 Released May 2023

This is a minor update. The browser source code status bar shows the name of the current function for easier navigation of functions that are too large to fit on the screen.

Version 9.2 Released April 2023

The small footprint function cov_dumpPart() accepts limit values less than 65. This allows BullseyeCoverage to operate on systems with extremely limited i/o bandwidth. Using a small limit value allows calling write() just once at a time, and writing only one line of text at time.

Version 9.1 Released March 2023

Our HTML report size is reduced. The Global Functions folder is removed from the Classes tab.

Version 9.0 Released October 2022

The BullseyeCoverage C/C++ parser has an improved name lookup system which provides an architecture for future improvements. This new system allows us to perform more rigorous parsing of complex and potentially ambiguous language constructs.

We improved support for the following:

Version 8.25 Released January 2022

We introduced coverage measurement of decisions in computations outside of control structure branch points, as recommended by Certification Authorities Software Team Position Paper CAST-10 ("What is a Decision in Application of Modified Condition/Decision Coverage and Decision Coverage?") This change provides consistency with safety critical certification efforts.

We added support for Visual Studio 2022.

Version 8.24 Released October 2021

With this release we have a new integration technique for Visual Studio 2010 and later. The new method does not rely on using the Microsoft.Cpp.arch.user.props property pages. Although Visual Studio uses these property pages by default, Microsoft recommends against using them.

We improved support for:

Version 8.23 Released July 2021

This is a minor release. Our HTML output conforms to HTML5. The covfn output column showing function coverage matches the format of the covclass, covdir, and covclass command line reports.

Version 8.22 Released May 2021

The Linux kernel module support is completely reworked to use the small footprint run-time model. This provides several advantages over the previous mechanism:

Version 8.21 Released December 2020

We reduced the time required for generating reports and merging. Our testing shows an average improvement of 65% compared to version 8.20. In many cases, we saw improvements up to 90%.

For Windows, we have a new internal run-time architecture. This new approach addresses an increasing industry focus on security. Our technique better handles complications such as restricted access to file systems and code-signing policies.

We added support for developing on macOS arm64. We dropped support for Windows CE.

Version 8.20 Released October 2020

We added additional information to our XML format export to assist with importing data into products that cannot understand condition/decision coverage, but can understand statement coverage.

Version 8.19 Released August 2020

Instrumenting Linux kernel modules now requires no special configuration settings.

Run-time error diagnostics are improved.

We added support for:

We dropped support for Embarcadero/CodeGear/Borland C++.

Version 8.18 Released April 2020

On macOS, integration with Xcode is now performed automatically by the install and uninstall programs. We added additional support for the upcoming C++20 standard.

Support for FreeBSD was dropped.

Version 8.17 Released January 2020

We added the Coverage Browser command Region Delete to allow completely and permanently removing data for obsolete project source files that were deleted. The Coverage Browser has improved logic for locating source files.

We added support for:

Version 8.16 Released October 2019

We added some support for the upcoming C++20 standard including __has_cpp_attribute, concepts, and the comparison operator <=>.

We improved the representation of function names containing parameter array dimensions, unnamed namespaces, and template non-type parameters.

On Windows, we improved speed of the the Coverage Browser Edit Copy command for HTML format.

The BullseyeCoverageEnv.txt file supports very large variable settings.

The small footprint run-time has better multi-processor support.

We added or updated support for the tools below.

We dropped support for the tools and systems below.

Version 8.15 Released August 2018

We improved measurement retention and merging for conditionally compiled functions.

The Microsoft C++ conforming preprocessor is supported.

Windows CE 8 / 2013 on ARMv7 is supported.

For embedded systems, BullseyeCoverage does not require DATA sections to be initialized.

Version 8.14 Released March 2018

For embedded systems, BullseyeCoverage now automatically handles uninitialized BSS sections, a common restriction. Stack usage was decreased.

covhtml exposes non-frame views for better compatibility with some continuous integration systems.

We support the C++17 official standard.

We added or updated support for the tools and systems below.

Version 8.13 Released November 2016

BullseyeCoverage supports all features in the C++17 draft N4606 dated 2016-07-12.

Version 8.12 Released October 2016

A new exclusion directive 'ignore' is added as a convenient shorthand for excluding a small number of source code lines.

We improved support for non-ASCII characters, particularly in filenames.

Support for ARC MetaWare Toolkit was freshened

Version 8.11 Released August 2016

This release adds covc option --mspp which makes it easier to work around compatibility problems with the Microsoft C++ macro preprocessor.

We added or updated support for the tools and systems below.

Version 8.10 Released March, 2016

This release adds 64-bit executables for Windows, which alleviate address space limitations. We added support for C++14 We improved internationalization and wide character support. The small footprint run-time configuration produces much smaller data files. We improved performance for merging coverage files.

We added or updated support for the tools and architectures below.

Version 8.9 Released March, 2014

This release adds support for a multi-level directory wildcard **. Additionally, the improvements below were added.

Version 8.8 Released October, 2013

We improved the compiler integration interface and added it to the Coverage Browser Options dialog. Run-time i/o performance is improved. For most embedded systems, the run-time is built automatically, using the small footprint run-time configuration.

We added or updated support for the tools and processors below.

Version 8.7 Released June, 2012

The small footprint run-time for embedded systems supports multiple threads and processes.

We added support for the compilers and platforms below.

Version 8.6 Released May, 2012

The covmerge command has a new option --mp that can dramatically reduce time by utilizing multiple processors. We updated support for QNX.

Version 8.5 Released, May 2012

We added support for C++11 and C11. The XML output has provision for stylesheets. We improved multiprocessor utilization during building. You can reset measurements with finer granularity.

We added or improved support for the products below.

Version 8.4 Released, October 2011

Operator sizeof and other operators with type-id operands such as __is_pod are considered not constant when they occur within a template. These expressions may vary across different instantiations.

We added support for the processors and compilers below.

Version 8.3 Released, August 2011

Our embedded system support now uses a small foot print run-time library that is small enough to run on 8-bit and 16-bit processors, and has simpler implementation requirements.

Version 8.2 Released, July 2011

The covhtml command adds HTML output that you can browse and sort similarly to the Coverage Browser.

Version 8.1 Released, May 2011

This release adds support for additional C++0x syntax including the range-based for statement, which required updating the coverage file format.

We increased compatibility with the overloaded operators && and || which behave like the built-in operators, for example the Boost tribool class.

The instrumentation data was reorganized to use a read-only data section, rather than initialized read-write data. This protects much of the run-time data from corruption and simplifies linker configuration for embedded systems.

We improved support for the environments and tools below.

Version 8.0 Released, Oct 2010

We increased the granularity for detecting modified code, from the source file level to the function level. When you measure coverage of a project and then modify a function, the measurements are reset for only that function, rather than the whole source file containing the function. This feature applies to coverage data files written by version 7.12.3 or later.