BSL261 — Небезопасное использование функции БезопасныйРежим()¶
Кратко¶
Небезопасное использование функции БезопасныйРежим()
Идентификаторы¶
| Поле | Значение |
|---|---|
| Код правила | BSL261 |
| Совместимый псевдоним | UnsafeSafeModeMethodCall |
| Серьёзность | WARNING |
| Включено по умолчанию | Да |
| Реализовано | Да |
| Теги | security, correctness |
Поведение¶
- Публичный идентификатор
BSL261и псевдонимUnsafeSafeModeMethodCallстабильны. - Правило сообщает о случаях, описанных на этой странице.
- Подавления и проектная конфигурация применяются до публикации результата.
- Для выполнения правила не требуется внешний анализатор или сетевой доступ.
Настройка и подавление¶
Код BSL### — основной стабильный идентификатор. Совместимый псевдоним
принимается в select, ignore и совместимых блоковых комментариях.
Все три семейства подавлений работают для текущей строки и диапазона. Если открывающий комментарий стоит после кода, он действует только на эту строку. Используйте любой один вариант:
noqa:
bsl-disable(совместимый вариант):
- совместимый
BSLLS-вариант:
Если тот же открывающий комментарий стоит на отдельной строке, он начинает диапазон. Закройте его парным маркером того же семейства:
// noqa: BSL261
// код без этой диагностики
// noqa-enable: BSL261
// bsl-disable: BSL261
// код без этой диагностики
// bsl-enable: BSL261
// BSLLS:UnsafeSafeModeMethodCall-off
// код без этой диагностики
// BSLLS:UnsafeSafeModeMethodCall-on
Чтобы отключить правило до конца файла, не добавляйте закрывающий
noqa-enable, bsl-enable или BSLLS:…-on.
Открывающий и закрывающий маркеры должны принадлежать одному семейству.
Описание диагностики¶
В "1С:Предприятии 8.3" метод глобального контекста БезопасныйРежим() возвращает тип Строка, если безопасный режим был установлен с указанием имени профиля безопасности.
Использования метода БезопасныйРежим(), в которых результат неявно преобразовывается к типу Булево является небезопасным, необходимо исправить на код с явным сравнением результата со значением Ложь. Таким образом, при установленном профиле безопасности код будет выполняться так же, как и в безопасном режиме.
Примеры¶
Неправильно:
Если БезопасныйРежим() Тогда
// Логика выполнения в безопасном режиме...
КонецЕсли;
Если Не БезопасныйРежим() Тогда
// Логика выполнения в небезопасном режиме...
КонецЕсли;