The Code Coverage Branch Monitor (CCBM) is a set of utilities that allow instrumentation of C source code for the purpose of branch coverage measurement. This encompasses operations for code instrumentation, removal of this instrumentation, retrieval of coverage information, merging coverage information, and displaying this information with reference to the (original) source code.
The CCBM supports
Instrumentation of C source code with “reached” markers, according to certain rules and exclusions (i.e., a CCBM setup).
Textual output and merging of CCBM coverage informations.
Mapping coverage information back to the source code in order to display reached and missed lines.
Textual merging of coverage information with other formats, e.g., gcov coverage.
Generation of overview and summary files (HTML).
Extensions that can store and recover coverage information in the EEPROM memory in order to preserve information throughout system power-off situations.
The instrumentation basically adds a bit-assignment to every branch in the control flow. Initially 0, a set bit indicates that the corresponding branch has been executed. The bit-assignment can only distinguish “not reached” and “reached”; how often a reached branch in the source code has been executed is not measured.
The coverage information is usually read-out in some test environment of a project. This read-out happens in an internal (ASCII-based) format and can be associated with the instrumented source files later. The CCBM provides operations for computing representations of the coverage information per source code line and can summarise this in HTML overview files.
The CCBM has been successfully applied in various Level-B and Level-C projects in the avionics field, including the Airbus/KID A350XWB, A380 and A340/A318 families and the IMA OSCM component.
At Bremen University, the CCBM is used in the analysis of an kernel implementation for avionics (ARINC-653 API).
The CCBM is available for
Linux (e.g., SuSE-10.2 32bit, openSUSE-15.5, CentOS-8, Ubuntu-20)
Windows/Cygwin (e.g., Windows 10 – Cygwin 2.11.2 32bit, Windows 11 - Cygwin 3.4.5 64bit)
Windows/WSL2 (with a supported Linux)
Other platforms may be supported on request.
Annoucements on new CCBM releases are available via RSS feed . This feed is also used to inform about any serious problems with some released versions.
A complete list of CCBM-related announcements is available here.