The Coco team at froglogic is excited to deliver a new release of Coco, version 5.1.0, available today for download. This release offers users significant ease-of-use improvements when compiling, plus a number of bug fixes in all aspects of the program. Read the release highlights below:
New: Visual Studio Coco Wizard for Simplified Build Configuration
Project configuration for Visual Studio-based projects received a major overhaul in 5.1.0. Users of the former Microsoft Visual Studio add-in are familiar with the lengthy process of configuring their build modes: a listicle of tickboxes to activate various coverage parameters characterized the setup. Now, project configuration is simplified to a 2-page graphical wizard which can be used within Microsoft Visual Studio or outside of Microsoft Visual Studio as a standalone app for Visual Studio projects (e.g., .NET Core).
The new wizard guides you through project configuration in a more user-friendly way: you can drag & drop coverage options; add rules through filters; generate a summary of the build mode; and get online help through integrated documentation for each setting. The wizard works multi-platform, including on Linux and macOS systems, includes a command line version to modify the project via scripting, and is general-purpose in that it is not limited strictly to the MS Visual Studio Integrated Development Environment.
New Support for Specifying Trigger Functions & Custom C Library Source Files
The default method by which Coco saves the coverage data is via writing to a file when the program exits. This method is standard for, e.g., desktop applications which terminate normally, but is inconvenient (or not possible) for applications which run continuously, as is the case for embedded systems or servers. Before, users would need to add statements to their code, explicitly saving the coverage data.
Coco 5.1.0 brings a new feature for saving coverage data that does not touch application files: via trigger functions. Users can specify a trigger function which adds the required lines for saving the coverage automatically. That is, the trigger function switch will tell the CoverageScanner where and when to put the coverage saving function at compile time.
Additionally, Coco now supports supplying custom C library source files, compiled as part of the instrumented program. These source files are meant to contain user-defined code (e.g., Custom I/O), are included automatically in the build, and remain separate, that is, do not touch application code.
Automatic Flag Detection for Cross-Compilation
The CoverageScanner now makes intelligent guesses for typical --cs-libgen
compiler parameters for instrumentation of OS kernel modules and embedded system cross-compilations. This auto-detection of command line switches was developed in an effort to reduce common compilation errors and make Coco a more 'plug-n-play' tool for embedded toolchains.
Augmented C++20 support
The C++20 threeway comparison operator <=>
is now supported.
Simplified Qt QML Instrumentation
Previously, instrumentation of Qt QML code required that the user replace one of the Qt shared libraries with a patched version provided by froglogic.
Now, the instrumentation is handled by cocoqmlscanner
and a new tracker object which is compiled by the customer. The tracker object holds the counters for the instrumentation, and writes the coverage. The chief advantage to this new method is that there is no need to obtain a new library if the Qt version changes.
Key Fixes
- Build issues resolved for Linux Kernel modules.
- .NET Core support on Windows added.
- Cobertura reports now optionally report manual validations; issues with this report type for Azure DevOps have been corrected.
- C++11 handling of
final
andconst_expr
fixed.
For a complete listing of all changes, take a look at the Coco 5.1.0 Release Notes.
How can I get support?
Answers to the most common questions on using Coco can be found in our online documentation. For topic-specific how-to's, take a look at the Coco blog.
If you need additional support, reach out to our team here
Feedback
Our goal is to make Coco the most advanced, yet user-friendly code coverage analysis toolchain there is. Let us know how we're doing in the comments.