How to do code coverage with Gcovr tool
1. Prerequisites
Install Gcovr tool with sudo apt install gcovr
2. Sample code
$ cat hello.c
#include <stdio.h>
void print_hello()
{
printf("Helloworld!!!");
return;
}
int main()
{
print_hello();
return 0;
}
3. Compile source with --coverage
or -fprofile-arcs -ftest-coverage
flags
--coverage
or -fprofile-arcs -ftest-coverage
flags$ cc -fprofile-arcs -ftest-coverage hello.c -o hello
The .gcno
record file is generated after adding the GCC compile option -ftest-coverage
, which contains information for reconstructing the base block map and assigning source line numbers to blocks during the compilation process.
$ ls
total 32K
-rw-rw-r-- 1 shanmugk shanmugk 123 Dec 11 11:08 hello.c
-rw-rw-r-- 1 shanmugk shanmugk 608 Dec 11 11:08 hello.gcno
-rwxrwxr-x 1 shanmugk shanmugk 24K Dec 11 11:08 hello
4. Run the user program
Run the user program to generate the .gcda
file that contains the coverage data counts.
$ ./hello
Helloworld!!!
$ ls
total 36K
-rw-rw-r-- 1 shanmugk shanmugk 123 Dec 11 11:08 hello.c
-rw-rw-r-- 1 shanmugk shanmugk 608 Dec 11 11:08 hello.gcno
-rwxrwxr-x 1 shanmugk shanmugk 24K Dec 11 11:08 hello
-rw-rw-r-- 1 shanmugk shanmugk 120 Dec 11 11:08 hello.gcda
5. Run gcovr
command to print a tabular report on the console
gcovr
command to print a tabular report on the console$ gcovr
------------------------------------------------------------------------------
GCC Code Coverage Report
Directory: .
------------------------------------------------------------------------------
File Lines Exec Cover Missing
------------------------------------------------------------------------------
hello.c 6 6 100%
------------------------------------------------------------------------------
TOTAL 6 6 100%
------------------------------------------------------------------------------
6. Generating HTML reports
$ gcovr --html-details coverage.html
$ ls
total 56K
-rw-rw-r-- 1 shanmugk shanmugk 123 Dec 11 11:08 hello.c
-rw-rw-r-- 1 shanmugk shanmugk 608 Dec 11 15:35 hello.gcno
-rwxrwxr-x 1 shanmugk shanmugk 24K Dec 11 15:35 hello
-rw-rw-r-- 1 shanmugk shanmugk 120 Dec 11 15:35 hello.gcda
-rw-rw-r-- 1 shanmugk shanmugk 7.7K Dec 11 15:51 coverage.html
-rw-rw-r-- 1 shanmugk shanmugk 10K Dec 11 15:51 coverage.hello.c.html
7. Open coverage.html
file to browse the coverage report
coverage.html
file to browse the coverage report$ firefox ./coverage.html
Last updated