¿Hay alguna manera de ignorar una sola advertencia FindBugs?

Con PMD, si desea ignorar una advertencia específica, puede usar // NOPMD para que se ignore esa línea.

¿Hay algo similar para FindBugs?

El enfoque inicial FindBugs implica filtros de configuración XML aka filtros . Esto es realmente menos conveniente que la solución PMD, pero FindBugs funciona en bytecode, no en código fuente, por lo que los comentarios obviamente no son una opción. Ejemplo:

      

Sin embargo, para resolver este problema, FindBugs más tarde introdujo otra solución basada en anotaciones (vea SuppressFBWarnings ) que puede usar en la clase o en el nivel del método (más conveniente que XML en mi opinión). Ejemplo (tal vez no el mejor pero, bueno, es solo un ejemplo):

 @edu.umd.cs.findbugs.annotations.SuppressFBWarnings( value="HE_EQUALS_USE_HASHCODE", justification="I know what I'm doing") 

Tenga en cuenta que FindBugs 3.0.0 SuppressWarnings ha quedado en desuso en favor de @SuppressFBWarnings debido al choque de nombre con SuppressWarnings de Java.

Aquí hay un ejemplo más completo de un filtro XML (el ejemplo anterior por sí solo no funcionará, ya que solo muestra un fragmento y le faltan las begin and end):

        

Si está utilizando el complemento FindBugs de Android Studio, vaya a su archivo de filtro XML usando Archivo-> Otras configuraciones-> Configuración predeterminada-> Otras configuraciones-> Buscar-IDEAS-> Filtro-> Excluir archivos de filtro-> Agregar.

Como mencionan otros, puede usar la anotación @SuppressFBWarnings . Si no desea o no puede agregar otra Dependencia a su código, puede agregar la Anotación a su Código usted mismo, a los Findbugs no les importa en qué Paquete está la Anotación.

 @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 ""; } 

Fuente: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88

Actualizar Gradle

 dependencies { compile group: 'findbugs', name: 'findbugs', version: '1.0.0' } 

Busque el informe FindBugs

file: ///Users/your_user/IdeaProjects/projectname/build/reports/findbugs/main.html

Encuentra el mensaje específico

encontrar errores

Importar la versión correcta de la anotación

 import edu.umd.cs.findbugs.annotations.SuppressWarnings; 

Agregue la anotación directamente sobre el código ofensivo

 @SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX") 

Vea aquí para más información: findbugs Spring Annotation

En el momento de escribir esto (mayo de 2018), FindBugs parece haber sido reemplazado por SpotBugs . El uso de la anotación SuppressFBWarnings requiere que el código se compile con Java 8 o posterior e introduce una dependencia de tiempo de comstackción en spotbugs-annotations.jar .

Usar un archivo de filtro para filtrar las reglas de SpotBugs no tiene tales problemas. La documentación está aquí .

Voy a dejar este aquí: https://stackoverflow.com/a/14509697/1356953

Tenga en cuenta que esto funciona con java.lang.SuppressWarnings por lo que no es necesario utilizar una anotación por separado.

@SuppressWarnings en un campo solo suprime las advertencias de findbugs informadas para esa statement de campo, no todas las advertencias asociadas con ese campo.

Por ejemplo, esto suprime la advertencia “Field only ever set to null”:

@SuppressWarnings (“UWF_NULL_FIELD”) Cadena s = null; Creo que lo mejor que puedes hacer es aislar el código con la advertencia en el método más pequeño que puedas, luego suprimir la advertencia en todo el método.