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

BSL218 — Отсутствует удаление временного файла после использования

Кратко

Отсутствует удаление временного файла после использования

Идентификаторы

Поле Значение
Код правила BSL218
Совместимый псевдоним MissingTemporaryFileDeletion
Серьёзность WARNING
Включено по умолчанию Да
Реализовано Да
Теги resource-management

Поведение

  • Публичный идентификатор BSL218 и псевдоним MissingTemporaryFileDeletion стабильны.
  • Правило сообщает о случаях, описанных на этой странице.
  • Подавления и проектная конфигурация применяются до публикации результата.
  • Для выполнения правила не требуется внешний анализатор или сетевой доступ.

Настройка и подавление

Код BSL### — основной стабильный идентификатор. Совместимый псевдоним принимается в select, ignore и совместимых блоковых комментариях.

[tool.onec-hbk-bsl]
select = ["BSL218"]
ignore = ["MissingTemporaryFileDeletion"]

Все три семейства подавлений работают для текущей строки и диапазона. Если открывающий комментарий стоит после кода, он действует только на эту строку. Используйте любой один вариант:

  • noqa:
Значение = "пример";  // noqa: BSL218
  • bsl-disable (совместимый вариант):
Значение = "пример";  // bsl-disable: BSL218
  • совместимый BSLLS-вариант:
Значение = "пример";  // BSLLS:MissingTemporaryFileDeletion-off

Если тот же открывающий комментарий стоит на отдельной строке, он начинает диапазон. Закройте его парным маркером того же семейства:

// noqa: BSL218
// код без этой диагностики
// noqa-enable: BSL218

// bsl-disable: BSL218
// код без этой диагностики
// bsl-enable: BSL218

// BSLLS:MissingTemporaryFileDeletion-off
// код без этой диагностики
// BSLLS:MissingTemporaryFileDeletion-on

Чтобы отключить правило до конца файла, не добавляйте закрывающий noqa-enable, bsl-enable или BSLLS:…-on.

Открывающий и закрывающий маркеры должны принадлежать одному семейству.

Описание диагностики

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

Примеры

Неправильно:

ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("xml");
Данные.Записать(ИмяПромежуточногоФайла);
// далее нет удаления файла

Правильно:

ИмяПромежуточногоФайла = ПолучитьИмяВременногоФайла("xml");
Данные.Записать(ИмяПромежуточногоФайла);

// Работа с файлом
...

// Удаляем временный файл
Попытка
   УдалитьФайлы(ИмяПромежуточногоФайла);
Исключение
   ЗаписьЖурналаРегистрации(НСтр("ru = 'Мой механизм.Действие'"), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

Особенности работы

Диагностика определяет корректность работы с временными файлами по наличию методов удаления либо перемещения.

Если в прикладном решении используется свой метод удаления/перемещения поверх платформенного, то стоит указать его в параметре диагностики, добавив через |. Диагностика понимает как глобальные методы, так и расположенные в общих модулях или модулях менеджеров.

Ниже приведены примеры настройки

  • Глобальный метод МоеУдалениеФайлов в модуле ГлобальныйСервер в параметре указывается как МоеУдалениеФайлов
  • Метод МоеУдалениеФайлов в общем модуле ФайлыКлиентСервер в параметре указывается как ФайлыКлиентСервер.МоеУдалениеФайлов
  • Метод МоеУдалениеФайлов в модуле менеджера справочника ФайловыеОперации в параметре указывается как Справочники.ФайловыеОперации.МоеУдалениеФайлов

и так далее.

Источники