2008-09-19 31 views
2

Je joue avec le merveilleux FindBugs plugin pour Hudson. Idéalement, j'aimerais que la construction échoue si FindBugs trouve des problèmes. Est-ce possible?Hudson FindBugs plugin: comment faire échouer le travail en cas de problème?

S'il vous plaît, n'essayez pas et dites-moi que "0 avertissements" est irréaliste avec FindBugs. Nous avons utilisé FindBugs de Ant pendant un certain temps et nous maintenons généralement 0 avertissements. Nous y parvenons en utilisant des filtres d'exclusion généraux et des annotations spécifiques/ciblées.

Répondre

0

Vous ne pouvez pas compter sur trouver des bugs tellement, c'est juste un système expert qui vous dit que quelque chose peut être erroné avec votre programme pendant l'exécution. Personnellement, j'ai vu beaucoup d'avertissement généré par findbugs parce qu'il n'était pas capable de comprendre l'exactitude du code (en fait). Un exemple lorsque vous ouvrez une connexion stream ou jdbc dans une méthode et que vous la fermez dans une autre, dans ce cas findbugs s'attend à voir close() appeler dans la même méthode qui est parfois impossible à faire.

3

Peut-être avez-vous déjà vu cette option, mais elle peut au moins définir votre build comme instable lorsque vous avez plus de X avertissements. Sur la page de configuration de votre travail, juste en dessous du champ de saisie des résultats de Findbugs où vous spécifiez votre modèle de fichier findbugs, vous devriez avoir un bouton 'avancé'. Cela augmentera et vous donnera un «seuil instable» ainsi que des rapports de santé qui modifient l'indicateur météo de Hudson pour le travail en fonction du nombre d'avertissements.

Je ne voudrais pas que mon build échoue, mais unstable semble raisonnable si vous maintenez 0 avertissements (et probablement 0 échecs de test).

4

La méthode hudson est d'utiliser unstable et de ne pas échouer pour quelque chose comme ça. Cependant, si vous voulez vraiment que votre build échoue, vous devriez le gérer dans ant.

<findbugs ... warningsProperty="findbugsFailure"/> <fail if="findbugsFailure">

1

Comme Tom a noté, la manière prévue pour ce faire est le warningsProperty de la tâche de fourmi FindBugs. Cependant, nous n'avons pas aimé le contrôle grossier qui nous a donné plus d'échec de construction. Nous avons donc écrit une tâche Ant personnalisée qui analyse la sortie XML de FindBugs. Il définira une propriété Ant si des avertissements haute priorité sont trouvés, une propriété différente si des avertissements corrects sont trouvés, une troisième propriété si des avertissements de sécurité sont trouvés, etc. Cela nous permet d'échouer la génération d'un sous-ensemble ciblé d'avertissements FindBugs, tout en générant un rapport HTML qui couvre un plus large éventail de problèmes. Ceci est particulièrement utile lors de l'ajout de l'analyse FindBugs à une base de code existante.