﻿# V7030\. Suspicious code formatting\. The 'else' keyword may be missing\.

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

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

```cpp
function setPermissions(role) {
  let permissions = Permissions.NONE; 
  if (role == ADMIN) {
    permissions = Permissions.ANY; 
  } if (role == USER) {                // <=
    permissions = Permissions.ONLY_READ; 
  } else {
    permissions = Permissions.NONE; 
  }
}
```

В этом фрагменте устанавливаются права в системе в зависимости от роли пользователя\. Если роль соответствует `ADMIN`, то переменной `rights` присваивается ` Permissions.ANY`\. Однако после этого проверки продолжаются\. Условие `role == USER` будет ложным, и переменной `permissions` будет присвоено значение `NONE`\. 

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

```cpp
function setPermissions(role) {
  let permissions = Permissions.NONE; 
  if (role == ADMIN) {
    permissions = Permissions.ANY; 
  } else if (role == USER) {
    permissions = Permissions.ONLY_READ; 
  } else {
    permissions = Permissions.NONE; 
  }
}
```

В ситуациях, когда цепь из `else-if` не подразумевается, следует изменить форматирование для упрощения понимания кода:

```cpp
if (x > 10) {
  Do1(); 
}

if (x > 7) {
  Do2(); 
} else {
  Do3(); 
}
```