﻿# V2507\. MISRA\. The body of a loop\\conditional statement should be enclosed in braces\.

Диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

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

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

Пример 1: 

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

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

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

Пример 2:

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

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

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

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

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

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