6 ответов:
начальный подход FindBugs включает в себя файлы конфигурации XML aka фильтры. Это действительно менее удобно, чем решение PMD, но FindBugs работает на байт-коде, а не на исходном коде, поэтому комментарии, очевидно, не вариант. Пример:
<Match> <Class name="com.mycompany.Foo" /> <Method name="bar" /> <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" /> </Match>однако, чтобы решить эту проблему, FindBugs позже представил другое решение, основанное на аннотации (см.
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из-за столкновения имени с JavaSuppressWarnings.
вот более полный пример фильтра XML (пример выше сам по себе не будет работать, так как он просто показывает фрагмент и отсутствует
<FindBugsFilter>begin и End теги):<FindBugsFilter> <Match> <Class name="com.mycompany.foo" /> <Method name="bar" /> <Bug pattern="NP_BOOLEAN_RETURN_NULL" /> </Match> </FindBugsFilter>Если вы используете плагин FindBugs для Android Studio, перейдите к файлу фильтра XML с помощью File->Other Settings->Default Settings->Other Settings->FindBugs-IDEA->Filter->Exclude filter files->Add.
Как уже упоминалось, вы можете использовать
@SuppressFBWarningsПримечание. Если вы не хотите или не можете добавить другую зависимость в свой код, вы можете добавить аннотацию в свой код самостоятельно, Findbugs dosn't заботится о том, в каком пакете находится Аннотация.@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
Ш Обновление
dependencies { compile group: 'findbugs', name: 'findbugs', version: '1.0.0' }найдите отчет FindBugs
file:///Users/your_user/IdeaProjects/projectname/build / reports / findbugs / main.HTML-код
найти конкретное сообщение
импортируйте правильную версию аннотации
import edu.umd.cs.findbugs.annotations.SuppressWarnings;добавить аннотацию непосредственно над нарушителем код
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")см. здесь для получения дополнительной информации: в FindBugs Весна Аннотация
на момент написания этого (май 2018 года), FindBugs, кажется, были заменены на SpotBugs. Используя
SuppressFBWarningsаннотация требует, чтобы ваш код был скомпилирован с Java 8 или более поздней версии и вводит зависимость времени компиляции отspotbugs-annotations.jar.использование файла фильтра для фильтрации правил SpotBugs не имеет таких проблем. Документация здесь.
Я собираюсь оставить это здесь:https://stackoverflow.com/a/14509697/1356953
обратите внимание, что это работает с
java.lang.SuppressWarningsпоэтому нет необходимости использовать отдельную аннотацию.@SuppressWarnings на поле подавляет только предупреждения findbugs сообщается для этого объявления поля, а не каждое предупреждение, связанное с это поле.
например, это подавляет поле "только когда-либо значение null" внимание:
@SuppressWarnings ("UWF_NULL_FIELD") строка s = null; я думаю, что лучше всего вы можете сделать, это изолировать код с предупреждением, в мельчайших метод вы можете, а затем подавить предупреждение на весь метод.

Comments