Отключение гидролокатора для определенного кода


можно ли отключить гидролокатор (www.sonarsource.org) измерения для конкретных блоков кода, которые не хотят быть измерены?

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

4 101

4 ответа:

Это FAQ. Вы можете поставить //NOSONAR на линии срабатывания предупреждения. Я предпочитаю использовать механизм FindBugs, который заключается в добавлении аннотации @SuppressFBWarnings:

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")

вы можете аннотировать класс или метод с помощью SuppressWarnings

@java.lang.SuppressWarnings("squid:S00112")

кальмар:S00112 в этом случае это идентификатор проблемы сонара. Вы можете найти этот идентификатор в пользовательском интерфейсе Sonar. Перейти к вопросам детализации. Найдите проблему, по которой вы хотите подавить предупреждения. В красном поле проблемы в вашем коде есть ссылка на правило с определением данной проблемы. Как только вы нажмете, что вы увидите в верхней части страницы.

Я рекомендую вам попытаться подавить определенные предупреждения с помощью @SuppressWarnings("squid:S2078").

для подавления нескольких предупреждений Вы можете сделать это так @SuppressWarnings({"squid:S2078", "squid:S2076"})

есть еще //NOSONAR комментарий, который говорит SonarQube игнорировать все ошибки для конкретной строки.

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

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

вы можете прочитать больше об этом в часто задаваемые вопросы

Примечание: Габор Бакос указывает на старый FAQ, который теперь 404s. это первый результат google для меня, поэтому я хочу помочь всем, у кого может быть тот же вопрос

редактировать: 6/30/16 SonarQube теперь называется SonarLint

на всякий случай вам интересно, как найти номер кальмара. Просто нажмите на сообщение гидролокатора (ex. Remove this method to simply inherit it.) и проблема гидролокатора будет расширяться.

в левом нижнем углу он будет иметь номер кальмара (ex. squid:S1185 Ремонтопригодность > Понятность)

так что вы можете подавить его с помощью @SuppressWarnings("squid:S1185")

Я не могу найти номер кальмара в sonar 5.6, с этой аннотацией также работает:

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})