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

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

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

Ответы на вопрос(5)

Решение Вопроса

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

@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
    value = "NAME_OF_THE_FINDBUGS_RULE_TO_IGNORE",
    justification = "Why you choose to ignore it")
 17 июл. 2013 г., 08:39
Согласовано. Однако я не уверен, правильно ли интерпретирует сонар@SuppressFBWarnings (добавлено, чтобы избежать столкновений сjava.lang.SuppressWarnings), а также игнорирует это.
 12 мар. 2018 г., 11:54
Не могли бы вы предоставить другую ссылку на FAQ по SonarQube? Я вижу форму входа вместо FAQ
 21 мая 2015 г., 21:57
Ссылка на FAQ устарела. Вот новыйFAQ
 17 июл. 2013 г., 08:41
AFAIK, Sonar использует FindBugs. Поэтому, если FindBugs обрабатывает эти аннотации, я не понимаю, почему они не будут работать при запуске FindBugs через Sonar. В любом случае, тестирование не должно быть трудным.

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

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

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

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

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

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

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

Изменить: 30.06.16 SonarQube теперь называется SonarLint

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

Внизу слева будет номер кальмара (например,squid:S1185 Ремонтопригодность & gt; Понятность)

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

 29 мар. 2016 г., 16:53
Спасибо за подсказку к ингному предупреждению о нескольких сонарных кубах
 01 нояб. 2016 г., 07:26
Другая проблема, связанная с маркировкой его как ложного срабатывания на интерфейсе, состоит в том, что если по какой-либо причине проект будет удален и добавлен снова, все установленные вами флаги исчезнут.

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

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

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

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

 01 мар. 2017 г., 09:31
Проблема в том, что Eclipse отображает предупреждениеUnsupported @SuppressWarnings("squid:S00112"), Вы можете настроить Eclipse, чтобы игнорировать это, но затем опечатку, такую как в@SuppressWarnings("uncheckedd") не будет обнаружен
 14 авг. 2015 г., 13:00
Я могу подтвердить, что это также работает с определенным идентификатором правила FindBugs, например,@SuppressWarnings("findbugs:UI_INHERITANCE_UNSAFE_GETRESOURCE").

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

@SuppressWarnings({"pmd:AvoidCatchingGenericException", "checkstyle:com.puppycrawl.tools.checkstyle.checks.coding.IllegalCatchCheck"})
 27 сент. 2018 г., 21:15
squid предназначен для базы данных Java Sonar-sourced (SonarAnalyzer Java).pmd а такжеcheckstyle находятся в других хранилищах правил.

Ваш ответ на вопрос