При использовании Eclipse с FindBugs можно ли пометить ошибку как не ошибку и удалить ее из списка ошибок?

FindBugs обнаружил потенциальную ошибку в моем коде. Но это не ошибка.

Можно ли отметить это событие как «не ошибка» И удалить его из списка ошибок?

Я достаточно четко задокументировал, почему в каждом случае это не ошибка.

Например. Класс реализует сопоставимый интерфейс. у него есть метод compareTo. Однако я не отменял метод equals.

FindBugs это не нравится, поскольку в JavaDocs говорится, что рекомендуется

(x.compareTo(y)==0) == (x.equals(y))

Хотя в моем случае это условие есть и всегда будет верным.

Просто приветствуем подверженный ошибкам, который легко интегрируется с большинством систем сборки и работает со стандартной аннотацией SuppressWarnings (в отличие от аннотации, специфичной для FindBugs). Если FindBugs затрудняет поиск ошибок, вы будете рады, что сделали это.

dimo414 01.06.2016 08:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
18
1
9 961
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вероятно, добавив фильтр в качестве параметра findbugs

Match clauses can only match information that is actually contained in the bug instances

<Match>
   <Class name = "com.foobar.MyClass" />
   <Method name = "myMethod" />
   <Bug pattern = "EQ_COMPARETO_USE_OBJECT_EQUALS" />
</Match>
Ответ принят как подходящий

Вместо использования фильтров вы также можете использовать аннотацию SuppressWarnings. Вы должны использовать аннотацию из пакета findbugs, что означает, что вам либо нужен импорт, либо используйте его полное имя. Это связано с тем, что кроме SuppressWarnings из JDK он имеет "класс" хранения, который необходим, потому что findbugs работает со скомпилированным байт-кодом, а не с исходным кодом.

Пример:

@edu.umd.cs.findbugs.annotations.SuppressWarnings(
    value = "EQ_COMPARETO_USE_OBJECT_EQUALS", 
    justification = "because I know better")

Есть один угловой случай, когда вам, вероятно, не следует использовать аннотацию: если ваш код представляет собой код библиотеки, который заканчивается в банке, который может использоваться другими проектами и, вы все еще используете Java5. Причиной этого является ошибка в JDK, который приводит к сбою javac, если аннотация отсутствует в пути к классам.

Я считаю ваше решение более подходящим для исходного вопроса. +1

VonC 30.10.2008 11:26

Это было именно то, что я искал, спасибо. Мне любопытно, существует ли какой-либо плагин для Eclipse для автоматического создания этих аннотаций?

dimo414 30.07.2009 00:48

Я не знаю ни одного плагина eclipse, который может генерировать эти аннотации для вас.

WMR 30.07.2009 13:01

Параметр value принимает один или несколько имена паттернов ошибок. Используйте {"foo", "bar", ...} для нескольких.

David Harkness 20.07.2012 01:15

Используйте SuppressFBWarnings, чтобы не использовать везде полное имя.

David Harkness 27.09.2012 21:53

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

что, если код со временем изменится?

вопрос конкретно в том, что делать, если вы знаете, что сообщенная ошибка неверна, поэтому «придерживаться рекомендации», вероятно, больше не полезно / невозможно

pvgoddijn 29.07.2009 13:38

Другие вопросы по теме