Reputation: 131
When gcc 4.1 (using gcov) next line:
p = new Class;
is reported as 100% branch coverage <-- THIS IS OK for me.
Why using gcc 4.4 and higher same line is reportted as:
[+ -] p = new Class; (50% branch coverage)
... <-- THIS IS a problem for covering 100% !!!
Can I set any extra options to newer gcc versions in order to report the same branch coverage as gcc 4.1 for single lines as p = new Class;
?
Upvotes: 7
Views: 10147
Reputation: 322
Another solution would be to use --exclude-throw-branches
if you are running gcovr
. For example:
gcovr --exclude-throw-branches ...
This allows you to still throw exceptions in your code but exclude all exception generated branches. More on this in gcovr FAQ
Upvotes: 4
Reputation: 131
Solved !
We have some C/C++ files with and without exceptions handling, so lcov/gcov process "exceptions handling" for each code block.
Inside a normal block, for example:
int main(void)
{
...
...
[+ -] printf("Hello\n");
...
}
gcov reports that printf line has a "branch coverage" of 50% ---> WHY ?
Because exceptions handling is enabled !!!
In order to solve this issue, specify:
-fno-exceptions
in g++ command line.
Example:
g++ -O0 --coverage -fno-exceptions -fno-inline ....
Thanks !
Upvotes: 6