In CLion, you can run CMake applications and tests with code coverage measurements. Code coverage results provide the percentage of code lines executed during a run and the number of times a particular line was hit.
Running CMake applications or tests with coverage
You can call Run with Coverage from the toolbar next to the configuration switcher or from the gutter menu:
When you call Run with Coverage, but no coverage files (.gcov or .profraw) are found, CLion suggests adding the coverage flags:
If you click Fix and rerun, CLion will do the following:
Search for an existing CMake profile, which has the same build type, toolchain, and CMake options as in the currently used profile, but with added compiler options for coverage (see Coverage compiler flags). If one is found, CLion will switch to it and use it to run your configuration with coverage.
If no such profile is found, CLion will create a new one, copying the Build type, Toolchain, and CMake Options parameters from the current profile and passing the coverage flags as
CMAKE_C_FLAGSin CMake options. Then CLion will switch to this newly created profile and use it to run you configuration with coverage.
Coverage compiler flags
If you pass coverage flags manually, you can use one of the following options depending on the compiler and coverage tooling you prefer:
In this case, the gcov tool will be used.
Clang / Clang-cl
Two options here:
Reading coverage results
When coverage data is ready, the Coverage tool window opens up automatically. It shows the percentage of the files per folder and lines per file covered during the launch:
In any file, you can check the gutter indicator and click it next to a particular line to learn how many times it was hit:
A line executed fully is marked green. Yellow marker means that it was only partically executed.
To modify the colors of coverage highlighting, click or go to Line Coverage node.and expand the
CLion also shows coverage statistics in the Project view:
Merging results from several runs
When you rerun coverage analysis, CLion prompts you to choose how you prefer the new results to be presented:
Add to active suites – new results will be added to the previously collected statistics.
Replace active suites – the already collected data will be overwritten.
Do not apply collected coverage data – new results will be ignored.
Code coverage settings are gathered in the:
In the Tools section, you can provide custom paths to gcov / llvm-cov / llvm-profdata. By default, CLion takes the paths from the
PATH environment varible.
Troubleshooting and current limitations
If you get empty coverage reports, check whether your compiler version matches the version of gcov / llvm-cov tool (default or custom) that you are using.