﻿# V523\. The 'then' statement is equivalent to the 'else' statement\.

Анализатор обнаружил, что истинная и ложная ветки инструкции if полностью совпадают\. Часто это свидетельствует о наличии логической ошибки\.

Пример:

```cpp
if (X)
  Foo_A();
else
  Foo_A();
```

Независимо от того, будет условие `X` ложным или истинным, вызов функции `Foo_A()` всё равно произойдёт\.

Корректный вариант кода:

```cpp
if (X)
  Foo_A();
else
  Foo_B();
```

Пример подобной ошибки, взятый из реального приложения:

```cpp
if (!_isVertical)
  Flags |= DT_BOTTOM;
else
  Flags |= DT_BOTTOM;
```

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

```cpp
if (exp) {
} else {
}
```

Также анализатор считает подозрительным, если инструкция `if` не содержит блок `else`, а следующий за ним код идентичен блоку условного оператора\. При этом блок кода заканчивается оператором `return`, `break` и т\.п\.

Подозрительный фрагмент кода:

```cpp
if (X)
{
  doSomething();
  Foo_A();
  return;
}
doSomething();
Foo_A();
return;
```

Возможно, программист забыл исправить скопированный фрагмент кода либо написал лишний код\.