2008-10-30 3 views
18

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

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

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

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

FindBugs не нравится, как состояние JavaDocs, что рекомендуется

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

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

+0

Просто крик для [с ошибкой] (http://errorprone.info/), который легко интегрируется с большинством систем сборки и работает со стандартным ['SuppressWarnings'] (https://docs.oracle. com/javase/8/docs/api/java/lang/SuppressWarnings.html) (в отличие от специфичного для FindBugs). Если FindBugs дает вам трудное время, попробуйте подвергнуть ошибкам, вы будете рады, что сделали. – dimo414

ответ

34

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

Пример:

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

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

+0

Я нахожу ваше решение более адаптированным к исходному вопросу. +1 – VonC

+0

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

+0

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

6

Вероятно, добавив filter в качестве параметра FindBugs

Совпадения положение может только соответствует информации, которая на самом деле содержится в случаях ошибок

<Match> 
    <Class name="com.foobar.MyClass" /> 
    <Method name="myMethod" /> 
    <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" /> 
</Match> 
0

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

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

+7

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