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