# V3504. AUTOSAR. The body of a loop\conditional statement should be enclosed in braces.

Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.

Тела операторов 'while', 'do-while', 'for', 'if', 'if-else', 'switch' должны быть заключены в фигурные скобки.

Использование фигурных скобок четко определяет, какие выражения составляют тело, повышает читаемость кода и снижает вероятность возникновения ряда ошибок. Например, при отсутствии фигурных скобок программист может ошибочно воспринять выравнивание или не заметить символ ';', случайно поставленный после оператора.

Пример 1:

    void example_1(....)
    {
      if (condition)
        if (otherCondition)
          DoSmt();
      else
        DoSmt2();
    }

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

    void example_1(....)
    {
      if (condition)
      {
        if (otherCondition)
        {
          DoSmt();
        }
        else
        {
          DoSmt2();
        }
      }
    }

Пример 2:

    void example_2(....)
    {
      while (count < 10)
        DoSmt1(); DoSmt2();
    }

Форматирование данного кода также не соответствует логике его исполнения, так как к циклу относится только выражение 'DoSmt1()'.

Исправленный вариант:

    void example_2(....)
    {
      while (count < 10)
      {
        DoSmt1();
        DoSmt2();
      }
    }

Примечание: 'if', следующий сразу после 'else' не обязательно должен быть заключен в фигурные скобки. На фрагмент кода, приведённый ниже, анализатор не будет выдавать предупреждение.

    if (condition1)
    { .... }
    else if (condition2)
    { .... }

Данная диагностика классифицируется как:

AUTOSAR-M6.3.1 AUTOSAR-M6.4.1