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
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.