Oracle Solaris Studio 12.2 Discover 和 Uncover 用户指南

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

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

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

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