2010-07-30 9 views
11

Findbugs rapporte ceci:Puis-je dire à findbugs d'ignorer les classes que je ne peux pas ajouter?

findbugs: 
[findbugs] Executing findbugs from ant task 
[findbugs] Running FindBugs... 
[findbugs] The following classes needed for analysis were missing: 
[findbugs] com.company.OptionalClass 
[findbugs] Warnings generated: 11 
[findbugs] Missing classes: 2 
[findbugs] Calculating exit code... 
[findbugs] Setting 'missing class' flag (2) 
[findbugs] Setting 'bugs found' flag (1) 
[findbugs] Exit code set to: 3 
[findbugs] Java Result: 3 
[findbugs] Classes needed for analysis were missing 
[findbugs] Output saved to findbugs.xml 
BUILD SUCCESSFUL 

Ce OptionalClass est référencé à partir d'un pot tiers pour lequel je n'ai pas le code source, et pour laquelle je ne veux pas une analyse findbugs. Cela fait référence à une classe que je n'ai pas dans mon classpath, ou ailleurs. Cette classe est probablement utilisée dans certains cas, lorsque notre jar tiers est configuré d'une certaine manière.

Existe-t-il un moyen de dire aux findbugs d'ignorer cette classe?

Notez qu'il termine l'analyse et génère un rapport findbugs.xml, il s'agit donc d'un problème mineur.

Répondre

3

Ce message s'affiche car vous faites référence à cette classe quelque part dans vos classes binaires. Cela ne signifie pas nécessairement que FindBugs essayait d'analyser com.company.OptionalClass pour le signaler; plutôt, il est plus probable que FindBugs l'analyse pour obtenir plus d'informations sur la classe qui le référence.

Tenir compte une partie de votre code source, que vous ne voulez analyser:

package my.actual.codebase; 
import com.some.third.party.stuff.OptionalClass; 

class ReferencesOptionalClass extends OptionalClass {} 

Ce genre d'exemple est commun avec les classes de test, qui font référence par exemple [email protected] mais le pot JUnit n'est pas inclus dans ce que vous voulez analyser.

Dans l'exemple ci-dessus vous voulez des résultats pour ReferenceOptionalClass, mais pour les obtenir, certaines parties de FindBugs doivent regarder OptionalClass. S'il ne peut pas faire cela, parce qu'il n'est pas là, il signale que la classe est manquante [1]. Lorsque FindBugs ne trouve pas cette classe, il abandonne généralement le type spécifique d'analyse qu'il essayait de faire et continue avec le reste de l'analyse sans problème.

La réponse simple est si vous êtes satisfait du niveau d'analyse que FindBugs vous donne, alors ignorez simplement l'erreur.

[1] Notez qu'il est probable que cela pourrait même être une référence transitive, c'est-à-dire que votre code inclut la classe A, qui référence B dans un fichier JAR auxiliaire, qui référence alors OptionalClass.

1

Non, Mais vous n'avez pas besoin de source ou de générer des rapports findbugs pour ce code si vous ajoutez le fichier jar à la section 'Auxillary Jars' du fichier de projet findbugs.

+0

Je n'ai pas non plus le jar des classes compilées. –

1

Pour les classes ignorer tiers, spécifiez une option -auxclasspath classpath lors de l'utilisation en ligne de commande ou de fournir un élément imbriqué <auxClasspath refid="classpath"> lors de l'utilisation tâche ant, où votre pot tiers est dans le classpath.

Questions connexes