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

Раздел 22. Экранирование кода от проверок

В исходном коде модулей может возникнуть ситуация, когда необходимо игнорировать срабатывание правил. Данная ситуация может возникнуть по различным причинам:

  • Проектное решение;

  • Невозможность изменить код в принципе.

Для упрощения обработки срабатываний из кода была добавлена функциональность — экранирование кода от срабатываний проверок. Ранее такая возможность была доступна только через web-интерфейс SonarQube.

Включение

По умолчанию обработка поглощающих комментариев отключена. Есть два взаимозаменяемых варианта включения:

  • добавить в файл sonar-project.properties параметр sonar.bsl.skipAbsorptionComments со значением false;
  • Через web-интерфейс SonarQube:

skip_comments

Описание

Для экранирования кода от срабатываний нужно добавить специальный комментарий в код. Общий шаблон комментария:

// [Префикс]:[ФлагАктивации]

или

// [Префикс]:[КлючПроверки]

где:

  • [Префикс] — префикс экранирования. Принимает варианты sonar или сонар в любом регистре;
  • [ФлагАктивации] — флаг, указывающий на действие включения / выключения проверки. Возможные варианты:
  • для выключения — off или выкл в любом регистре;
  • для включения — on или вкл в любом регистре;
  • [КлючПроверки] — ключ проверки, которую нужно отключить. Ключ можно найти в описании проверки в SonarQube (верхний правый угол). Например:

image-20210628192026967

Примеры

Отключить все проверки в модуле

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

// sonar:off

или

// сонар:выкл

Отключить проверки для участка кода

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

// сонар:выкл
Сообщить("Сообщение пользователю #1");
Сообщить("Сообщение пользователю #1");
// сонар:вкл

или

// сонар:выкл
Функция МагическоеЧисло()
    МагическоеЧисло = 100 + 1 / 99 * 100500;
    Возврат МагическоеЧисло
КонецФункции
// сонар:вкл

Отключить срабатывание конкретного правила

Для поглощения срабатывания конкретной проверки в строке кода можно использовать комментарий, расположенный в конце строки. Например:

Функция МагическоеЧисло()
    МакическоеЧисло = 100 + 1 / 99 / 99 * 100500; // сонар:MagicNumber
КонецФункции

Для поглощения срабатываний нескольких проверок расположите в конце строки несколько служебных комментариев подряд:

Функция МагическоеЧисло()
    МакическоеЧисло = 100 + 1 / 99 / 99 * 100500; // сонар:MagicNumber // сонар:Spelling
КонецФункции