Cantata Logo - unit and integration testing tool for C/C++

Code Coverage
Dynamic Analysis

Objective measurement of how much of the code
has been executed by your tests

Cantata code coverage capabilities can be used integrated with Cantata tests, or with any external test driver.


It provides an objective measurement of test execution completeness, to supplement requirements based and robustness tests.

What is Code Coverage?

Code Coverage is a dynamic analysis technique to measure which parts of the code have been executed by tests.  The logic structure within the code can be identified by individual constructs (syntax elements). The measurement of these individual constructs is recorded using structural code coverage metrics.


Code coverage analysis is used to identify testing gaps where code is not exercised by requirements driven and robustness driven testing approaches.


Coverage analysis is required for compliance with all international software safety standards, with higher safety levels requiring achievement of more rigorous coverage metrics.

Cantata filter code coverage - Coverage Metrics - Projects - Test Cases - Inheritance contexts - User-defined contexts - coverage files

What does Cantata Code Coverage help me do?

Cantata code coverage - Measure Coverage - Function entry points - function call-returns - basic blocks - statements - decisions -loops - relational operators - boolean operators conditions - MC/DC



Code coverage is measured using the following metrics, with standard specific Rule Sets for integrated checking of required code coverage levels.

  • Function Entry Points
  • Function Call-Returns
  • Basic Blocks
  • Statements
  • Decisions (branches)
  • Loops
  • Relational Operators
  • Boolean Operators
  • Conditions
  • MC/DC (Unique-cause and Masking variants)



Cantata diagnostics present coverage from complete project code-trees, drilling down to individual code constructs within each line of code helping you to pin-point gaps and direct test effort efficiently.


Automatic test case coverage optimisation aids test case vector selection from large data sets, and reduces regression testing overhead.



Build Variant Coverage understands source code executed over more than one build variant. Cantata uses pre-compiled defines (#defines) to separately identify the different build variants. Cantata Coverage Viewer displays aggregated data for multiple build variants, of the same source code. 



Cantata provides unparalleled filtering of code coverage data by selection of:

  • Coverage Metrics
  • Projects
  • Test Cases
  • Inheritance Contexts
  • User-defined Contexts
  • Build Variants
  • Coverage Files

Cantata can also trace code coverage throughout the execution of individual test cases.

Cantata unit testing tool screenshot - code coverage view filtered by test case



In addition to the powerful diagnostics of code coverage results within the Eclipse® GUI, Cantata generates flexible user configurable reports in XML, HTML and safety standards certification ready ASCII text reports.


Build Variant Coverage reports aggregate coverage data across all defines, which is suitable as certification evidence for all build variants of the source code. 


Reports and certification evidence embed the integrated checks on the achievement of the required coverage metric targets.

Cantata diagnosing and reporting - Using Eclipse for diagnostics and for C/C++ testing results and reporting - reports in RTF, XML, HTML and ASCII text

How does Cantata Code Coverage Work

How does cantata Code Coverage work Chart - Use of instrumentation on a copy of the source code - Coverage analysis can be used integrated with Cantata tests or used to measure execution

Cantata Coverage uses instrumentation (via the GUI or CLI) on a copy of the source code, and coverage data is recorded for both graphical diagnosis and certification ready evidence.


Coverage analysis can be used integrated with Cantata tests or used to measure execution from other tests, and data from multiple tests can be easily combined.


Analysis is made simpler by customisable coverage Rule Sets, which automate all the code instrumentation, data reporting and required coverage checking, for all the main software safety standards.