Let’s say I have this code:
int function(bool b)
{
// execution path 1
int ret = 0;
if(b)
{
// execution path 2
ret = 55;
}
else
{
// execution path 3
ret = 120;
}
return ret;
}
I need some sort of a mechanism to make sure that the code has gone in any possible path, i.e execution paths 1, 2 & 3 in the code above.
I thought about having a global function, vector and a macro.
This macro would simply call that function, passing as parameters the source file name and the line of code, and that function would mark that as “checked”, by inserting to the vector the info that the macro passed.
The problem is that I will not see anything about paths that did not “check”.
Any idea how do I do this? How to “register” a line of code at compile-time, so in run-time I can see that it didn’t “check” yet?
I hope I’m clear.
Usually coverage utilities (such as gcov) are supplied with compiler. However please note that they will usually give you only C0 coverage. I.e.
a ? b : cis marked as executed even if only one branch have been used.So even if your tests shows 100% C0 coverage you may not catch every path in code – and probably you don’t have time to do it (number of paths grows exponentially with respect to branches). However it is good to know if you have 10% C2 or 70% C2 (or 0.1% C2).