Avec PMD, si vous souhaitez ignorer un avertissement spécifique, vous pouvez utiliser // NOPMD
pour ignorer cette ligne.Existe-t-il un moyen d'ignorer un seul avertissement FindBugs?
Y at-il quelque chose de similaire pour FindBugs?
Avec PMD, si vous souhaitez ignorer un avertissement spécifique, vous pouvez utiliser // NOPMD
pour ignorer cette ligne.Existe-t-il un moyen d'ignorer un seul avertissement FindBugs?
Y at-il quelque chose de similaire pour FindBugs?
L'approche initiale de FindBugs implique des fichiers de configuration XML appelés filters. 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 introduit plus tard une autre solution basée sur annotations (voir SuppressFBWarnings
) que vous pouvez utiliser à la classe ou au niveau de la méthode (plus pratique que XML à mon avis). Exemple (peut-être pas le meilleur mais, eh bien, il 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
a été dépréciée en faveur de @SuppressFBWarnings
à cause du conflit de noms avec Java de SuppressWarnings
.
Voici un exemple plus complet d'un filtre XML (l'exemple ci-dessus par lui-même ne fonctionnera pas car il montre juste un extrait et il manque le <FindBugsFilter>
balises début et fin):
<FindBugsFilter>
<Match>
<Class name="com.mycompany.foo" />
<Method name="bar" />
<Bug pattern="NP_BOOLEAN_RETURN_NULL" />
</Match>
</FindBugsFilter>
Si vous êtes À l'aide du plugin Eclipse FindBugs, accédez à votre fichier de filtre XML à l'aide de Window-> Preferences-> Java-> FindBugs-> Filter files-> Exclude filter files-> Add.
Je vais laisser celui-là: https://stackoverflow.com/a/14509697/1356953
S'il vous plaît noter que cela fonctionne avec java.lang.SuppressWarnings
donc pas besoin d'utiliser une annotation séparée.
@SuppressWarnings sur un champ supprime uniquement des avertissements FindBugs déclarés pour cette déclaration sur le terrain, pas tous avertissement associé à ce domaine.
Par exemple, ceci supprime le champ "ne modifions null" avertissement :
@SuppressWarnings ("UWF_NULL_FIELD") String = null de; Je pense que le meilleur que vous pouvez faire est d'isoler le code avec l'avertissement dans la plus petite méthode que vous pouvez, puis supprimer l'avertissement sur la méthode entière.
'java.lang.SuppressWarnings' ne peut pas fonctionner. Il a la rétention de source, donc n'est pas visible aux findbugs. –
Mise à jour Gradle
dependencies {
compile group: 'findbugs', name: 'findbugs', version: '1.0.0'
}
Localisez le rapport FindBugs
fichier: /// Users/votre_utilisateur/IdeaProjects/ProjectName/construction/rapports/findbugs/main.html
Trouver le message spécifique
Importer la version correcte de l'annotation
import edu.umd.cs.findbugs.annotations.SuppressWarnings;
Ajouter l'annotation directement au-dessus du code incriminé
@SuppressWarnings("OUT_OF_RANGE_ARRAY_INDEX")
Voir ici pour plus d'informations: findbugs Spring Annotation
Vous pouvez utiliser la syntaxe 'compile 'net.sourceforge.findbugs: annotations: 1.3.2'' qui est plus courte. –
+1, mais veuillez mettre à jour votre réponse avec: gradle 'testCompile 'com.google.code.findbugs: annotations: 3.0.0'' et nom d'annotation' @ SuppressFBWarnings' –
Comme d'autres Mentionnés, vous pouvez utiliser l'annotation @SuppressFBWarnings
. 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 soucient pas de savoir dans quel paquet 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
+1 pour votre commentaire "Je sais ce que je fais" – dhiller
Question bonus: Comment puis-je trouver la valeur appropriée pour une donnée signalé "bug" (en utilisant le sonar)? – PlanBForOpenOffice
Le problème, bien sûr avec l'utilisation de l'approche d'annotation est que votre code importe plutôt inutilement (et dépendances ultérieures) la bibliothèque Findbugs :( –