Journal "Développer sans bug" avec FindBugs?

Posté par (page perso) .
5
12
juil.
2010
Il existe nombre d'outils d'audit de code dans l'univers du développement Java qui sont autant d'armes contre les faux-pas de développement. FindBugs (qui porte bien son nom...) propose de parcourir les applications java à la recherche de motifs à problèmes.

L'outil développé par l'Université du Maryland appartient à la famille des analyseurs statiques comme PMD ou CheckStyle. Il ne cherche pas à observer l'application en action mais plutôt à se plonger dans son code. Cependant FindBugs se différencie au sein de cette famille par le fait que son analyse est effectuée sur le bytecode plutôt que sur le code source.

Findbugs détecte une liste de bugs connus, sans cesse remise à jour, qui va de la simple comparaison de chaînes de caractères avec l'opérateur "=" jusqu'à des bugs en environnement multi-threads plus complexes. Si la liste complète des problèmes recherchés ne donne pas satisfaction, FindBugs offre la possibilité de créer des plugins pour l'augmenter. Le plugin fb-contrib permet en particulier l'identification de nombreux cas qui n'ont pas encore trouvé le chemin de la liste officielle.

L'Université du Maryland propose son outil sous diverses formes qui vont de l'application standalone jusqu'au JNLP en-ligne en passant par le plugin Eclipse (via l'URL d'installation http://findbugs.cs.umd.edu/eclipse). Les tâches Ant, Maven ou un plugin Sonar permettent quant à eux de l'inclure dans un processus d'intégration continue.

Pour conclure, on peut noter que Google l'utilise lors de ses "FixIt Days". Ce sont des jours dans l'année dédiée à la résolution des TODO, des notes et des vices cachés des programmes que les développeurs de Google écrivent. Cette pratique n'est pas encore très suivie dans toutes les entreprises, mais semble pertinente quand l'on constate la qualité quelques logiciels....

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.