可以通过 parasoft-instrumentation coverage 注释为特定函数禁用或启用覆盖率插桩:
// parasoft-instrumentation coverage off- 禁用覆盖率插桩。// parasoft-instrumentation coverage on- 重新启用覆盖率插桩。
禁用了覆盖率插桩的函数的元素(如行、判定等)与将不被计入可覆盖范围。
这两个注释都会影响位于同一文件(预处理前)中的函数定义,从包含相应注释的行之后开始。它们作用于整个函数(作为一个整体)——例如,如果放在函数内部,将只影响注释后面的函数定义。
在以下示例中,将为 f2()、f3()、f5()、main() 函数禁用代码覆盖率插桩,为g()、f1()、f4() 启用代码覆盖率插桩。f4() 函数内的注释影响 f5() 和 main() 函数,因为它们的定义放在该注释之后。C/C++test 将把该示例代码视为具有七个可覆盖行(g() 中一行,f1() 中两行,f4() 中四行)。
int g(int i) { return i+1; }
int f1(int a) {
if (a >= 0) return +1;
else return -1;
}
// parasoft-instrumentation coverage off
int f2(int a) {
return g(a - 1) + g(a);
}
int f3(int a) {
return a + 2;
}
// parasoft-instrumentation coverage on
int f4(int a, int b) {
if (a == 3) {
return b;
} else {
/* parasoft-instrumentation coverage off */
int i = g(a+b);
return i;
}
}
int f5(int a) {
return f3(a * 2);
}
int main() {
f1(12);
return 0;
}
parasoft-instrumentation coverage 结构可以在 //... 和 /*...*/ 注释中使用。对于 /*...*/ 注释,整个结构必须与 /* 注释开始字符位于同一行。parasoft-instrumentation coverage 注释必须是代码行中唯一的结构才能被正确识别。