Исключение кода из анализа Sonar: способы и примеры

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы исключить определённый код из анализа SonarLint/SonarQube, используйте аннотацию @SuppressWarnings("squid:RuleID") для классов или методов, либо комментарий //NOSONAR для игнорирования конкретной строки.

Java
Скопировать код
// Исключение проверки правила для метода или класса
@SuppressWarnings("squid:1234") // Правило №1234: Не допускаем написание некачественного кода!
public void method() {
    //... ваш код здесь
}

// Исключение анализа определённой строки
int var = 0; //NOSONAR Не беспокойтесь, здесь всё в порядке.
Кинга Идем в IT: пошаговый план для смены профессии

Где найти и как подавить правило

Для подавления предупреждений SonarQube необходимо узнать ID правила. Откройте SonarQube, пройдите в раздел проблем и кликните на ссылающемся правиле. ID будет вверху, например, squid:S00112. Вписывайте его в аннотацию супрессора!

Использование комментария //NOSONAR

В некоторых случаях использование @SuppressWarnings может быть избыточным. Если вы хотите исключить отдельную строку, вполне достаточно //NOSONAR. Однако, будьте осмотрительны: необдуманное применение этого комментария может привести к проблемам.

Аннотации на страже качества кода

Аннотация @SuppressFBWarnings позволяет не только исключить код из анализа Sonar, но и аргументировать причину исключения. Она была создана для FindBugs, но прекрасно справляется и с Sonar.

Java
Скопировать код
@SuppressFBWarnings(value = "ID", justification = "Обоснование исключения этой части кода")

Исключение целых директорий из анализа

Если ваш проект состоит из множества модулей и аннотирование каждого класса или метода не является возможным, вы можете настроить Sonar так, чтобы он исключал из анализа определённые файлы или директории. Это помогает поддерживать порядок в коде и позволяет Sonar сосредоточиться на реальных проблемах.

properties
Скопировать код
# В файле sonar-project.properties
sonar.exclusions=**/gen/**/*,**/*Mock*.java

Визуализация

Можно сравнить отключение Sonar для определённого кода с выключением сигнализации в определённом зале музея:

Markdown
Скопировать код
Система охраны музея 🚨: [Зал скульптур, Галерея картин, Зал древних реликвий, Зал современного искусства 👩‍🎤]

Игнорирование Sonar 🤫: [Галерея картин]

Markdown
Скопировать код
До: 🚨🖼️🚨⚱️🚨💡
После:  🖼️🚨⚱️🚨💡
# Теперь Sonar 'не видит' Галерею картин. Но что, если случится кража?

Важно осторожно использовать //NOSONAR. Непродуманное применение этого метода может стать причиной серьёзных проблем.

Мастерство корректных исключений

Правильное определение области исключения

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

Постоянный контроль исключений

Постоянно пересматривайте актуальность подавляемых предупреждений — с течением времени они могут утратить свою необходимость.

CI/CD — помощник в определении исключений

В рамках автоматизированных процессов (CI/CD) исключайте автогенерированный код и сторонние библиотеки, чтобы упор делался на анализ оригинального кода.

Внимание, опасности!

Не следует злоупотреблять комментарием //NOSONAR

Бездумное применение к чересчур большому числу строк //NOSONAR может создать иллюзию безошибочного кода, скрывая реальные проблемы.

Аргументированные исключения

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

Качество проекта

Подавленные правила не отменяют критерии качества проекта. Проблемы, которые вы "заглушили", всё равно могут влиять на оценку проекта в рамках критериев качества SonarQube, если они присутствуют в настройках качественного профиля.

Полезные материалы

  1. Настройка области анализа — рекомендации по определению области анализа SonarQube.
  2. Параметры анализа — руководство по параметрам анализа, включая исключения.
  3. Критерии качества — информация о влиянии критериев качества на оценку кода.
  4. Настройки для многомодульных проектов — детальная информация по определению области анализа.
  5. Профили качества — обзор настройки правил и профилей для наиболее эффективного анализа.