Incorrectly indented statement

Отступление оператора неправильно делает его появляющимся как часть блока

Описание

Этот дефект возникает, когда отступление оператора делает его частью if, else или другой блок, но расположение или отсутствие скобок фактически сохраняет оператор вне блока.

Риск

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

Например, в этом примере:

if(credentialsOK())
   login=1;
   setCookies();
линия setCookies(); не является частью if блок, но отступление предполагает обратное.

Зафиксировать

Если требуется, чтобы оператор был частью блока, убедитесь, что оператор находится внутри скобок, связанных с блоком. Чтобы определить степень блока, на панели Source щелкните скобку открытия.

Если задан if, else или while оператор не имеет скобок после условия, частью if считается только следующая линия на пути выполнения до точки с запятой, else или while блок. Если необходимо включить в блок последующие линии, оберните их скобками.

Например, в предыдущем примере, чтобы включить обе операторы в if блокируйте, используйте:

if(credentialsOK()) {
   login=1;
   setCookies();
}

Примеры

расширить все

int switch1, switch2;

void doSomething(void);
void doSomethingElse(void);

void func() {
    if(switch1) 
        if(switch2)
            doSomething();
    else
        doSomethingElse();
}

В этом примере else изгиб, как если бы он был связан с первым if. Однако else фактически связана со вторым if. Отступы не совпадают с фактической ассоциацией и могут привести к неправильным предположениям о логике программы.

Коррекция - Используйте скобки соответствующим образом

Если вы хотите else для связи с первым if, используйте скобки, чтобы отметить контуры первого if блок.

int switch1, switch2;

void doSomething(void);
void doSomethingElse(void);

void func() {
    if(switch1) { 
        if(switch2)
            doSomething();
    }
    else
        doSomethingElse();
}

Информация о результатах

Группа: Хорошая практика
Язык: C | C++
По умолчанию: Off
Синтаксис командной строки : INCORRECT_INDENTATION
Влияние: Низкое
Введенный в R2020a