Пустой блок кода
Как правило, пустой блок кода обозначает забытый или потерянный код. Такой блок должен быть заполнен либо удален. Не рекомендуется заполнять пустой блок поясняющими комментариями. Запрещено использовать пустой блок Исключение, т.к. при этом часто скрываются программные ошибки. Недопустимо перехватывать любые исключения бесследно для системного администратора.
Пример подозрительного кода:
Если Условие Тогда
ВызовФункции();
Иначе
// есть комментарий. Это неверно, но можно настроить правило для исключения подобного срабатывания (опционально)
КонецЕсли;
Пример подозрительного кода со скрытием ошибки из исключения
Попытка
// код, приводящий к вызову исключения
...
Исключение // перехват любых исключений
КонецПопытки;
Как правило, подобная конструкция скрывает реальную проблему, которую впоследствии невозможно диагностировать.
Правильно:
Попытка
// код, приводящий к вызову исключения
....
Исключение
// Пояснение причин перехвата всех исключений "незаметно" от пользователя.
// ....
// И запись события в журнал регистрации для системного администратора.
ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции'"),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
См. также
- MITRE, CWE-1071 - Empty Code Block
- MITRE, CWE-1069 - Empty Exception Block
Экранирование кода
// sonar:EmptyBlock:off
// sonar:EmptyBlock:on