Выключение Sonar для определенного кода

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

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

Ответ 1

Это 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")

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

Подробнее об этом можно узнать в часто задаваемых вопросах

Примечание: Gábor Bakos указывает на более старые FAQ, которые теперь 404s. Это первый результат Google для меня, поэтому я хочу помочь кому-либо, у кого может быть один и тот же вопрос.

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

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

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

Итак, вы можете подавить его @SuppressWarnings("squid:S1185")

Ответ 4

Используйте //NOSONAR в строке, о которой вы предупреждаете, если это то, что вы не можете помочь своему коду. Оно работает!

Ответ 5

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

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