﻿# V7020\. Suspicious code formatting\. Curly brackets may be missing\.

Анализатор обнаружил потенциальную ошибку: форматирование кода, следующего за управляющей конструкцией, не соответствует логике выполнения программы\. Возможно, пропущены фигурные скобки\.

Рассмотрим пример:

```cpp
if (a == 1)
  b = c;
  d = b;    // <=
```

В этом примере инструкция `d = b;` выполнится вне зависимости от условия, поскольку при отсутствии блока после управляющей конструкции её телом будет только первое выражение\. При этом форматирование указывает на то, что выполнение `d = b;` ожидалось только при истинности условия `a == 1`\.

Согласно [Google JavaScript Style Guide](https://google.github.io/styleguide/jsguide.html#formatting-braces-all) фигурные скобки рекомендуется использовать для всех управляющих конструкций, даже если их тело содержит всего одну операцию\. Это позволит не допустить путаницы из\-за кода, вводящего в заблуждение\.

Варианты исправленного кода:

```cpp
// Option N1
if (a == 1) {
  b = c;
}
d = b; 

// Option N2
if (a == 1) {
  b = c;
  d = b;
}
```

Также вводящий в заблуждение код может выглядеть следующим образом:

```cpp
if (a == 1) b = c; d = b;
```

В этом случае операция `d = b;` также выполнится вне зависимости от условия\. 

Варианты исправления:

```cpp
if (a == 1) { b = c; d = b; }

if (a == 1) { b = c; }
d = b;

if (a == 1) b = c;
d = b;
```

**Примечание**\. В качестве управляющих конструкций анализатор рассматривает `if`, `for` и `while`\.