exponenta event banner

MISRA C++: Правило 2008 0-1-9

Не должно быть мертвого кода

Описание

Определение правила

Не должно быть мертвого кода.

Объяснение

Если операция достижима, но удаление операции не влияет на поведение программы, операция представляет собой мертвый код. Например, предположим, что переменная никогда не считывается после операции записи. Операция записи является избыточной.

Наличие мертвого кода может указывать на ошибку в логике программы. Поскольку компилятор может удалить мертвый код, его присутствие может вызвать путаницу у рецензентов кода.

Поиск неисправностей

Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.

Примеры

развернуть все

#define ULIM 10000

int func(int arg) {
    int res;
    res = arg*arg + arg;
    if (res > ULIM)
        res = 0; //Noncompliant
    return arg;
}

В этом примере операции, включающие res избыточны, поскольку функция func возвращает его аргумент arg. Все операции с участием res может быть удален без изменения эффекта функции.

Средство проверки помечает последнюю операцию записи на res потому что переменная никогда не читается после этой точки. Мертвый код может указывать на непреднамеренную ошибку кодирования. Например, вы намеревались вернуть значение res вместо arg.

Проверить информацию

Группа: Вопросы, не зависящие от языка
Категория: Обязательно
Представлен в R2016b