Avec PMD, si vous voulez ignorer un avertissement spécifique, vous pouvez utiliser // NOPMD
pour ignorer cette ligne.
Existe-t-il quelque chose de similaire pour FindBugs?
Avec PMD, si vous voulez ignorer un avertissement spécifique, vous pouvez utiliser // NOPMD
pour ignorer cette ligne.
Existe-t-il quelque chose de similaire pour FindBugs?
L'approche initiale de FindBugs implique des fichiers de configuration XML appelés filtres . C'est vraiment moins pratique que la solution PMD mais FindBugs fonctionne sur le bytecode, pas sur le code source, donc les commentaires ne sont é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 ensuite introduit une autre solution basée sur des 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, ce n'est qu'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
a été déconseillé en @SuppressFBWarnings
raison de la collision de noms avec Java SuppressWarnings
.
<dependency> <groupId>net.sourceforge.findbugs</groupId> <artifactId>annotations</artifactId> <version>1.3.2</version> <scope>provided</scope> </dependency>
<dependency><groupId>com.google.code.findbugs</groupId><artifactId>annotations</artifactId><version>3.0.0</version><scope>provided</scope></dependency>
à leur POM s'ils souhaitent utiliser@SuppressFBWarnings
.Comme d'autres l'ont mentionné, vous pouvez utiliser l'
@SuppressFBWarnings
annotation. Si vous ne voulez pas ou ne pouvez pas ajouter une autre dépendance à votre code, vous pouvez ajouter l'annotation à votre code vous-même, Findbugs ne se soucie pas du package de l'annotation.Source: https://sourceforge.net/p/findbugs/feature-requests/298/#5e88
la source
Voici un exemple plus complet d'un filtre XML (l'exemple ci-dessus en lui-même ne fonctionnera pas car il ne montre qu'un extrait de code et il manque les
<FindBugsFilter>
balises de début et de fin):Si vous utilisez le plug-in 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 les fichiers de filtre-> Ajouter.
la source
Mettre à jour Gradle
Localisez le rapport FindBugs
Trouver le message spécifique
Importez la version correcte de l'annotation
Ajoutez l'annotation directement au-dessus du code incriminé
Voir ici pour plus d'informations: findbugs Spring Annotation
la source
compile 'net.sourceforge.findbugs:annotations:1.3.2'
place une syntaxe plus courte.testCompile 'com.google.code.findbugs:annotations:3.0.0'
et nom d'annotation@SuppressFBWarnings
Au moment d'écrire ces lignes (mai 2018), FindBugs semble avoir été remplacé par SpotBugs . L'utilisation de l'
SuppressFBWarnings
annotation nécessite que votre code soit compilé avec Java 8 ou version ultérieure et introduit une dépendance de temps de compilation surspotbugs-annotations.jar
.L'utilisation d'un fichier de filtre pour filtrer les règles SpotBugs n'a pas de tels problèmes. La documentation est ici .
la source
Bien que d'autres réponses ici soient valables, elles ne sont pas une recette complète pour résoudre ce problème.
Dans un esprit d'exhaustivité:
Vous devez avoir les annotations findbugs dans votre fichier pom - elles ne sont qu'au moment de la compilation, vous pouvez donc utiliser la
provided
portée:Cela permet d'utiliser
@SuppressFBWarnings
une autre dépendance qui fournit@SuppressWarnings
. Cependant, ce qui précède est plus clair.Ensuite, vous ajoutez l'annotation au-dessus de votre méthode:
Par exemple
Cela inclut à la fois le nom du bogue et également une raison pour laquelle vous désactivez l'analyse pour celui-ci.
la source
Je vais laisser celui-ci ici: https://stackoverflow.com/a/14509697/1356953
Veuillez noter que cela fonctionne avec
java.lang.SuppressWarnings
donc pas besoin d'utiliser une annotation séparée.la source
java.lang.SuppressWarnings
ne peut pas fonctionner. Il a une rétention de source, il n'est donc pas visible pour les bogues.