Avec PMD, si vous souhaitez ignorer un avertissement spécifique, vous pouvez utiliser // NOPMD
pour que cette ligne soit ignorée.
Y a-t-il quelque chose de similaire pour FindBugs?
L'approche initiale de FindBugs implique des fichiers de configuration XML, à savoir filtres . C’est vraiment moins pratique que la solution PMD, mais FindBugs fonctionne sur du bytecode et non sur du code source. Les commentaires ne sont donc évidemment pas une option. Exemple:
<Match>
<Class name="com.mycompany.Foo" />
<Method name="bar" />
<Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
</Match>
Cependant, pour résoudre ce problème, FindBugs a plus tard introduit une autre solution basée sur annotations (voir SuppressFBWarnings
) que vous pouvez utiliser au niveau de la classe ou de la méthode. (plus pratique que XML à mon avis). Exemple (peut-être pas le meilleur, mais bon, c'est juste un exemple):
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(
value="HE_EQUALS_USE_HASHCODE",
justification="I know what I'm doing")
Notez que depuis FindBugs 3.0.0, SuppressWarnings
est obsolète en faveur de @SuppressFBWarnings
en raison du conflit de noms avec le SuppressWarnings
de Java.
Comme d'autres l'ont mentionné, vous pouvez utiliser le @SuppressFBWarnings
Annotation. Si vous ne voulez pas ou ne pouvez pas ajouter une autre dépendance à votre code, vous pouvez ajouter vous-même l'annotation à votre code. Findbugs ne se soucie pas du package dans lequel se trouve l'annotation.
@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 "";
}
Source: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
Voici un exemple plus complet de filtre XML (l'exemple ci-dessus en lui-même ne fonctionnera pas puisqu'il montre seulement un extrait et qu'il manque le <FindBugsFilter>
balises de début et de fin):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Si vous utilisez le plugin Android Studio FindBugs, accédez à votre fichier de filtre XML en utilisant Fichier-> Autres paramètres-> Paramètres par défaut-> Autres paramètres-> FindBugs-IDEA-> Filtre-> Exclure filtrer les fichiers-> Ajouter.
Update Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Localisez le rapport FindBugs
file: ///Users/your_user/IdeaProjects/projectname/build/reports/findbugs/main.html
Trouver le message spécifique
Importer la version correcte de l'annotation
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Ajoutez l'annotation directement au-dessus du code incriminé
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Voir ici pour plus d'informations: findbugs Spring Annotation
Au moment de la rédaction de cet article (mai 2018), FindBugs semble avoir été remplacé par SpotBugs . L'utilisation de l'annotation SuppressFBWarnings
nécessite que votre code soit compilé avec Java 8 ou version ultérieure et introduit une dépendance à la compilation sur spotbugs-annotations.jar
.
L'utilisation d'un fichier de filtre pour filtrer les règles SpotBugs ne pose pas ce problème. La documentation est ici .