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