С PMD, если вы хотите игнорировать определенное предупреждение, вы можете использовать // NOPMD
, чтобы игнорировать эту строку.Есть ли способ игнорировать одно предупреждение FindBugs?
Есть ли что-то подобное для FindBugs?
С PMD, если вы хотите игнорировать определенное предупреждение, вы можете использовать // NOPMD
, чтобы игнорировать эту строку.Есть ли способ игнорировать одно предупреждение FindBugs?
Есть ли что-то подобное для FindBugs?
Первоначальный подход FindBugs включает файлы конфигурации XML aka filters. Это действительно менее удобно, чем решение PMD, но FindBugs работает на байт-коде, а не на исходном коде, поэтому комментарии, очевидно, не являются вариантом. Пример:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Однако, чтобы решить эту проблему, FindBugs позже ввел еще одно решение, основываясь на annotations (см SuppressFBWarnings
), который можно использовать в классе или на уровне метода (более удобным, чем XML, на мой взгляд). Пример (возможно, не самый лучший, но, ну, это просто пример):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Обратите внимание, что с FindBugs 3.0.0 SuppressWarnings
устарела в пользу @SuppressFBWarnings
из-за конфликта имен с в Java SuppressWarnings
.
Вот более полный пример XML-фильтра (пример выше само по себе не будет работать, так как он просто показывает фрагмент и отсутствует <FindBugsFilter>
начала и конца тегов):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Если вы используя плагин Eclipse FindBugs, перейдите к файлу фильтра XML, используя Window-> Preferences-> Java-> FindBugs-> Фильтровать файлы-> Исключить файлы фильтров-> Добавить.
Я собираюсь оставить этот здесь: https://stackoverflow.com/a/14509697/1356953
Обратите внимание, что это работает с java.lang.SuppressWarnings
поэтому нет необходимости использовать отдельную аннотацию.
@SuppressWarnings на поле подавляет только FindBugs предупреждения сообщенные для этого поля декларации, а не каждый предупреждения, связанные с , что поле.
Например, это подавляет "поле только когда установлено нулевое значение" предупреждение:
@SuppressWarnings ("UWF_NULL_FIELD") Строка з = NULL; Я думаю, что самое лучшее вы можете сделать, это изолировать код с предупреждением до наименьшего метода , который вы можете, а затем подавить предупреждение на весь метод.
'java.lang.SuppressWarnings' не может работать. У этого есть удержание источника, так что не видно, чтобы найти bugs. –
Update Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Найдите отчет FindBugs
файла: /// Users/ваш_пользователь/IdeaProjects/Projectname/сборки/отчеты/FindBugs/главный.HTML
Найти конкретное сообщение
Импорта правильной версию аннотации
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Добавить аннотацию непосредственно над кодом нарушившей
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Смотрите здесь для получения дополнительной информации: findbugs Spring Annotation
Вместо этого вместо синтаксиса 'compile 'net.sourceforge.findbugs: annotations: 1.3.2'', который короче. –
+1, но любезно обновите свой ответ: gradle 'testCompile 'com.google.code.findbugs: annotations: 3.0.0'' и имя аннотации' @ SuppressFBWarnings' –
Как уже упоминалось другие, вы можете использовать @SuppressFBWarnings
аннотацию. Если вы не хотите или не можете добавить другую зависимость к вашему коду, вы можете добавить Аннотацию в свой код самостоятельно, Findbugs не заботятся о том, в каком пакете есть аннотация.
@Retention(RetentionPolicy.CLASS)
public @interface SuppressFBWarnings {
/**
* The set of FindBugs warnings that are to be suppressed in
* annotated element. The value can be a bug category, kind or pattern.
*
*/
String[] value() default {};
/**
* Optional documentation of the reason why the warning is suppressed
*/
String justification() default "";
}
Источник: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
+1 за комментарий: «Я знаю, что я делаю» – dhiller
Бонус Вопрос: Как мне найти соответствующее значение для заданного сообщили «ошибка» (с помощью гидролокатора)? – PlanBForOpenOffice
Проблема, конечно же, с использованием подхода аннотации заключается в том, что ваш код довольно бесполезно импортирует (и последующую зависимость) библиотеку Findbugs :( –