Раздел 22. Экранирование кода от проверок
В исходном коде модулей может возникнуть ситуация, когда необходимо игнорировать срабатывание правил. Данная ситуация может возникнуть по различным причинам:
-
Проектное
решение; -
Невозможность изменить код в принципе.
Для отключения срабатываний из кода была добавлена функциональность — экранирование кода от проверок.
Включение
По умолчанию обработка поглощающих комментариев отключена. Есть два взаимозаменяемых варианта включения:
-
добавить в файл
sonar-project.properties
параметрsonar.bsl.skipAbsorptionComments
со значением false; -
Через web-интерфейс SonarQube:
Описание
Для экранирования кода от срабатываний нужно добавить специальный комментарий в код по одному из следующих шаблонов:
// [Префикс]:[ФлагАктивации]
// [Префикс]:[КлючиПроверок]:[ФлагАктивации]
// [Префикс]:[КлючиПроверок]
где:
-
[Префикс] — префикс экранирования. Принимает варианты
sonar
илисонар
в любом регистре; -
[ФлагАктивации] — флаг, указывающий на действие включения / выключения проверки. Возможные варианты: для выключения —
off
иливыкл
в любом регистре; для включения —on
иливкл
в любом регистре; -
[КлючиПроверок] — список ключей проверки, перечисленных через
,
без пробелов, которые нужно отключить. Ключ можно найти в описании проверки в SonarQube (верхний правый угол). Например:
- Готовые шаблоны для экранирования конкретных проверок можно найти в текущей документации на страницах описаний проверок. Например:
Примеры
Отключить все проверки в модуле
Весь код, размещенный ниже одиночного комментария экранирования, будет изолирован от проверок кода. В общем случае достаточно в первой строке модуля разместить:
// sonar:off
или
// сонар:выкл
Отключить все проверки для участка кода
Для поглощения всех срабатываний в участке кода оберните код в экранирующие комментарии. Например:
// сонар:выкл
Сообщить("Сообщение пользователю #1");
Сообщить("Сообщение пользователю #1");
// сонар:вкл
Отключить конкретные правила для участка кода
Для поглощения срабатываний конкретных правил в участке кода оберните код в экранирующие комментарии. Например:
// сонар:MagicNumber,Spelling:выкл
Функция МагическоеЧисло()
МагическоеЧисло = 100 + 1 / 99 * 100500;
Возврат МагическоеЧисло
КонецФункции
// сонар:MagicNumber,Spelling:вкл
Отключить срабатывание конкретных правил в строке
Для поглощения срабатывания конкретной проверки в строке кода можно использовать комментарий, расположенный в конце строки. Например:
Функция МагическоеЧисло()
МакическоеЧисло = 100 + 1 / 99 / 99 * 100500; // сонар:MagicNumber
КонецФункции
Для поглощения срабатываний нескольких проверок, перечислите их через ,
:
Функция МагическоеЧисло()
МакическоеЧисло = 100 + 1 / 99 / 99 * 100500; // сонар:MagicNumber,Spelling
КонецФункции
Особенности обработки команд
Поглощающие комментарии работают достаточно гибко, в одной строке может быть указано несколько комментариев и все они будут учтены:
МакическоеЧисло = 100 + 1 / 99 / 99 * 100500; // сонар:MagicNumber // сонар:Spelling
Для включения отключенной ранее проверки можно использовать комментарий включения конкретной проверки, включения списка проверок или общего включения проверок, например:
// сонар:MagicNumber,Spelling,EmptyMethod:выкл
...
<здесь не работают проверки правил MagicNumber, Spelling и EmptyMethod>
...
// сонар:MagicNumber:вкл
...
<здесь не работают проверки правил Spelling и EmptyMethod>
...
// сонар:выкл
...
<здесь не работают никакие проверки>
...
// сонар:вкл
...
<здесь работают все проверки, в т.ч. Spelling и EmptyMethod>
...