在执行期间无法到达的代码 -凯发k8网页登录
在执行期间无法到达的代码
描述
不可达代码使用语句覆盖率来确定在执行期间是否可以到达代码的某个部分。语句覆盖率检查是否执行了某个程序语句。如果某个语句具有测试条件,并且至少发生了其中一个测试条件,则该语句将被执行并且可达。没有发生的测试条件不会被认为是死代码,除非它们有相应的代码分支。如果所有测试条件都没有发生,则该语句不会执行,并且每个测试条件都是一个不可达代码实例。例如,在以下代码的 switch
语句中,case 3
永远不会发生:
void test1 (int a) { int tmp = 0; if ((a!=3)) { switch (a){ case 1: tmp ; break; default: tmp = 1; break; /* case 3 falls through to case 2, no dead code */ case 3: case 2: tmp = 100; break; } } } void test2 (int a) { int tmp = 0; if ((a!=3)) { switch (a){ case 1: tmp ; break; default: tmp = 1; break; // dead code on case 3 case 3: break; case 2: tmp = 100; break; } } } |
在 test1()
中,case 3
将穿透执行到 case 2
,并且检查结果显示没有死代码。在 test2()
中,检查结果显示 case 3
存在死代码,因为下一行中的 break
语句未执行。
不可达代码的其他示例包括:
如果测试条件的计算结果始终为 false,则对应的代码分支不可到达。在源窗格中,该分支的左大括号显示为灰色。
如果测试条件的计算结果始终为 true,则该条件是冗余的。在源窗格中,条件关键字(例如
if
)显示为灰色。跟在
break
或return
语句后的代码。
如果某个代码块的左大括号在源窗格中显示为灰色,要突出显示整个块,请双击该大括号。
检查操作的对象是函数内的代码。未调用函数和不可达函数检查将确定是否函数本身未被调用,或者是从不可达代码内调用的。
对此检查进行诊断
示例
检查信息
组:数据流 |
语言:c | c |
首字母缩写: unr |