FindBugs обнаружил потенциальную ошибку в моем коде. Но это не ошибка.
Можно ли отметить это событие как «не ошибка» И удалить его из списка ошибок?
Я достаточно четко задокументировал, почему в каждом случае это не ошибка.
Например. Класс реализует сопоставимый интерфейс. у него есть метод compareTo. Однако я не отменял метод equals.
FindBugs это не нравится, поскольку в JavaDocs говорится, что рекомендуется
(x.compareTo(y)==0) == (x.equals(y))
Хотя в моем случае это условие есть и всегда будет верным.




Вероятно, добавив фильтр в качестве параметра 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
Это было именно то, что я искал, спасибо. Мне любопытно, существует ли какой-либо плагин для Eclipse для автоматического создания этих аннотаций?
Я не знаю ни одного плагина eclipse, который может генерировать эти аннотации для вас.
Параметр value принимает один или несколько имена паттернов ошибок. Используйте {"foo", "bar", ...} для нескольких.
Используйте SuppressFBWarnings, чтобы не использовать везде полное имя.
с другой стороны - если вы используете такой автоматический инструмент проверки кода, который выделяет потенциальные проблемы в соответствии с широко известными рекомендациями, может быть, вам стоит придерживаться его рекомендаций? подумайте о людях, которые будут поддерживать код после вас.
что, если код со временем изменится?
вопрос конкретно в том, что делать, если вы знаете, что сообщенная ошибка неверна, поэтому «придерживаться рекомендации», вероятно, больше не полезно / невозможно
Просто приветствуем подверженный ошибкам, который легко интегрируется с большинством систем сборки и работает со стандартной аннотацией
SuppressWarnings(в отличие от аннотации, специфичной для FindBugs). Если FindBugs затрудняет поиск ошибок, вы будете рады, что сделали это.