Open
Description
Описание проблемы, ошибки, которую надо диагностировать
Возможные сценарии:
- 0 простая повторная переустановка значения - реализовано в ПР
Значение = 1;
Значение = 2;
или похожий кейс из #178
МояПеременная = СтрЗаменить(КакаятоПеременная);
МояПеременная = СтрЗаменить(КакаятоДругаяПеременная);
- 1 во вложенных циклах используется одна и та же переменная цикла
Для Счетчик = 0 По 10 Цикл
Для Счетчик = 2 По 10 Цикл
Для Счетчик = 0 По 10 Цикл
КонецЦикла;
КонецЦикла;
КонецЦикла;
или
Для Каждого Элемент Из Коллекция1 Цикл
Для Каждого Элемент Из Коллекция2 Цикл
Для Каждого Элемент Из Коллекция3 Цикл
КонецЦикла;
КонецЦикла;
КонецЦикла;
- 2 из [FP] The iterator is not used in the For Each loop body #940
- неожиданно счетчик в цикле затирает переменную модуля
[ ] нужно учесть циклы Для по; Для Каждого
- неожиданно счетчик в цикле затирает переменную модуля
var Field;
procedure proc1 ()
set = new Array ();
for each Field in set do
Message ( Field );
proc2 ();
enddo;
endprocedure
procedure proc2 ()
Message ( Field );
endprocedure
- 3 кейс из [NEW] Бесполезное присваивание #945
- во всех ветвлениях затирается значение переменной
[ ] нужно учесть Если, ИначеЕсли; Попытка-Исключение;
- во всех ветвлениях затирается значение переменной
новЗначение = 5;
Если НекотороеУсловие Тогда
новЗначение = 10;
Иначе
новЗначение = 20;
КонецЕсли;
- 4 переменные, которые использовались, установлены снова, но далее не используются
Для Каждого Элем Из Коллекция Цикл
ИД = 10;
Элем.Реквизит = ИД;
ИД = 20; // не используется или потеряна !
КонецЦикла;
-
Есть небольшое пересечение с "Неиспользуемая локальная переменная" Неиспользуемая локальная переменная #920
-
также нужно учесть не только переменные, но и изменение реквизитов объектов - но это сложно и могут быть ФП, т.к. реквизит может быть переиспользован в методах, куда передается сам объект
ЗаказКлиента.ДатаНачалаДействияАбонемента = ПривестиСтрокуКТипу(ДанныеЗаказа.АбонементС, "Дата");
ЗаказКлиента.ДатаНачалаДействияАбонемента = ПривестиСтрокуКТипу(ДанныеЗаказа.АбонементПО, "Дата");
-
в последнем примере сработала
ошибка последней строки
-
Еще интересный кейс затирания\скрытия возможен в циклах в [NEW] Неверное изменение переменной\реквизита внутри цикла - имеет значение только последняя итерация цикла #1522
Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
Параметры диагностики
Тип Статья на русском
- 🐜 Ошибка
- 👮 Уязвимость
- 💂♂️ Потенциальная уязвимость
- 💩 Качество кода
-
Другое
Важность Статья на русском
- 💔 Блокирующая / Blocker
- ❤️ Критическая / Critical
- 💛 Важная / Major
- 💙 Незначительная / Minor
- 💚 Информационная / Info
- 💞 Другое
Тэги Статья на русском
-
STANDARD
- "Нарушение стандартов 1С" -
LOCKINOS
- "Не будет работать в другой ОС" -
SQL
- "Проблема с запросом" -
PERFORMANCE
- "Проблема производительности" -
BRAINOVERLOAD
- "Непонятный код" -
BADPRACTICE
- "Плохая практика программирования" -
CLUMSY
- "Излишние действия" -
DESIGN
- "Ошибка в проектировании" -
SUSPICIOUS
- "Подозрительный код" -
UNPREDICTABLE
- "Непредсказуемо работающий код" -
DEPRECATED
- "Устаревшая функциональность" -
ERROR
- "Ошибочная конструкция" -
LOCALIZE
- "Проблемы локализации"
Время на исправление (минут)
2 минуты