Код не может быть достигнут во время выполнения
Недостижимый код использует покрытие оператора, чтобы определить, может ли раздел кода быть достигнут во время выполнения. Покрытие оператора проверяет, выполняется ли оператор программы. Если оператор имеет условия испытания, и по крайней мере один из них происходит, оператор выполняется и достижим. Условия испытания, которые не происходят, не рассматриваются мертвым кодом, если у них нет соответствующего ответвления кода. Если все условия испытания не происходят, оператор не выполняется, и каждое условие испытания является экземпляром недостижимого кода. Например, в операторах 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 |