Код не может быть достигнут во время выполнения
Недостижимый код использует покрытие оператора, чтобы определить, может ли раздел кода быть достигнут во время выполнения. Покрытие оператора проверяет, выполняется ли оператор программы. Если оператор имеет условия испытания, и по крайней мере один из них происходит, оператор выполняется и достижим. Условия испытания, которые не происходят, не рассматриваются мертвым кодом, если у них нет соответствующей ветви кода. Если все условия испытания не происходят, оператор не выполняется, и каждое условие испытания является экземпляром недостижимого кода. Например, в 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
оператор на следующей строке не выполняется.
Другие примеры недостижимого кода включают:
Если условие испытания всегда оценивает ко лжи, соответствующая ветвь кода не может быть достигнута. На панели Source вводная фигурная скобка ветви является серой.
Если условие испытания всегда оценивает к истине, условие избыточно. На панели Source, ключевом слове условия, таком как if
, кажется серым.
Код следует за break
или return
оператор.
Если вводная фигурная скобка блока кода кажется серой на панели Source, чтобы подсветить целый блок, дважды кликнуть фигурную скобку.
Проверка работает с кодом в функции. Function not called проверок и Function not reachable определяют, не вызвана ли сама функция или названа из недостижимого кода.
Группа: Поток данных |
Язык: C | C++ |
Акроним: UNR |