open how java eclipse findbugs

java - how - eclipse marketplace



Al usar Eclipse con FindBugs ¿puedes marcar un error como no un error y hacer que se elimine de la lista de errores? (3)

FindBugs ha encontrado un error potencial en mi código. Pero no es un error.

¿Es posible marcar esta ocurrencia como ''no es un error'' Y hacer que se elimine de la lista de errores?

He documentado con bastante claridad por qué para cada caso no es un error.

Por ejemplo. Una clase implementa la interfaz comparable. tiene el método compareTo. Sin embargo, no he anulado el método de iguales.

A FindBugs no le gusta esto ya que los JavaDocs afirman que se recomienda que

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

Aunque en mi caso la condición anterior es y siempre será cierta.


En lugar de usar filtros, también puede usar la anotación SuppressWarnings . Debe usar la anotación del paquete findbugs, lo que significa que necesita una importación o usar el nombre completo de la misma. Esto se debe a que, aparte de SuppressWarnings del JDK, tiene retención de "Clase", que es necesaria porque findbugs opera en el bytecode compilado en lugar del código fuente.

Ejemplo:

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

Hay un caso de esquina en el que probablemente no debería usar la anotación: si su código es un código de biblioteca que termina en un contenedor, podría ser utilizado por otros proyectos y usted todavía está en Java5. La razón de esto es un error en el JDK que bloquea javac si la anotación no está en el classpath.


Por otro lado, si está utilizando una herramienta de revisión de códigos automatizada que resalta los problemas potenciales de acuerdo con recomendaciones ampliamente conocidas, ¿debería apegarse a sus recomendaciones? piense en personas que mantendrán código después de usted.

¿y si el código cambia después de tiempo?


Probablemente agregando un filtro como parámetro de findbugs

Las cláusulas de coincidencia solo pueden coincidir con la información que realmente está contenida en las instancias de error.

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