Перейти к содержанию

Возможное использование неинициализированной переменной

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

Например:

Если НекоеУсловие Тогда
      МояПеременная = Новый Структура("Ключ", 10);
ИначеЕсли
      // ряд следующих веток
      …
КонецЕсли;
МояПеременная.Вставить("ДругойКлюч", 20);  // если НекоеУсловие не ИСТИНА, то нужно учитывать, что МояПеременная может быть равна Неопределено

Правильно:

МояПеременная = Новый Структура(); // значение по умолчанию
Если НекоеУсловие Тогда
      МояПеременная.Вставить("Ключ", 10);
ИначеЕсли
      // ряд следующих веток
      …
КонецЕсли;
МояПеременная.Вставить("ДругойКлюч", 20);  // используем значение переменной, которая всегда имеет правильное значение

Данная рекомендация имеет смысл для больших блоков Если/ИначеЕсли/Иначе/Циклов и т.п., внутри которых сложно визуально по тексту контролировать инициализацию переменных.

Экранирование кода

// sonar:UndefinedVariableUsage:off
// sonar:UndefinedVariableUsage:on