可以通过 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
注释必须是代码行中唯一的结构才能被正确识别。