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