Java : analyse de code et détection de bugs

Boris HUISGEN May 6, 2009

développement java findbugs

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.

See also

Java : loguer les exceptions avec un stacktrace
Read more
Java : options d’exécution de la JVM
Read more
Eclipse : Remote debugging avec JDPA
Read more