Java : analyse de code et détection de bugs
Boris HUISGEN May 6, 2009
S’il y a bien un logiciel à conserver dans sa boite à outils, il s’agit d’un analyseur de code.
En phase de stabilisation d’un de mes logiciels, j’en ai profité pour passer un coup de FindBugs!, l’analyseur et détecteur de bugs open-source pour Java. Il opère directement sur le byte-code à la recherche d’erreurs de programmation et si les sources sont disponibles, il marque son endroit exact. Il dispose de son propre frontend graphique, mais un plugin Eclipse existe. L’intégration à un projet peut également se faire par le biais d’une tâche Ant.
Je me suis donc retrouvé avec à peu près 80 problèmes tous types confondus (sur les 40 000 lignes du projet, je trouve çà honnête), sachant qu’il y a toujours des faux-positifs (au nombre de 60).
Pêle-mêle, ont été détectés :
- des nettoyages de ressources inutiles dans des blocs de traitement d’exception.
- des itérateurs inadaptés par exemple lors d’une itération de Map, en me conseillant l’utilisation du bon.
- des problèmes de synchronisation d’ accès concurrents.
- un bloc synchronized vide, dans mon cas un faux-positif.
- un appel à wait() hors d’une boucle d’itération, idem faux-positif.
- l’utilisation de variables inutiles.
Malgré les faux-positifs, l’utilité de cet outil est indéniable. D’autres outils existent également : MPD, CheckStyle.
- Site officiel : http://findbugs.sourceforge.net/
- Source de téléchargement du plugin Eclipse : http://findbugs.cs.umd.edu/eclipse/