Oracle Solaris Studio 12.2 Discover 和 Uncover 用户指南

使用 Uncover 时的限制

只能校验有注释的代码

Uncover 只能校验根据Uncover 的使用要求中的说明准备的代码。无注释代码可能来自链接到二进制文件中的汇编语言代码,或者来自使用早于该部分中所列版本的编译器或操作系统编译的模块。

在准备时,特别要排除包含 asm 语句或 .il 模板的汇编语言模块和函数。

计算机指令可能不同于源代码

Uncover 处理计算机代码。它会查找计算机指令的覆盖率,然后将此覆盖率与源代码相关联。某些源代码语句没有关联的计算机指令,因此,看上去好像是 Uncover 没有报告这些语句的覆盖率。例如,请看以下代码片段:

#define A 100
#define B 200
...
   if (A>B) {
        ...
   }

根据您的预期,Uncover 应该对 if 语句报告非零执行计数,但编译器很可能会删除此代码,使得 Uncover 在校验期间看不到它。因此,不会针对这些指令报告覆盖率数据。