Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Практическая интеграция PVS-Studio и SourceCraft - 15.07

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

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

16 Июн 2026

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

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

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.

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

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 не подразумевается, следует изменить форматирование для упрощения понимания кода:

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

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

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