Выключение 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"})