Java : analyse de code et détection de bugs

Boris HUISGEN
Boris HUISGEN
|

Un analyseur de code est l’outil indispensable à toute activé de développement logiciel. Son utilisation devrait faire suite à tout phase d’écriture de code pour détecter au plus vite les bugs logiciels.

En phase de stabilisation d’un de mes logiciels, j’en ai profité pour effectuer une passe d’analyse avec FindBugs!, un analyseur de code open-source pour Java. Il opère directement sur le byte-code généré à la recherche d’erreurs classique de programmation, mais aussi complexes. En cas de détection, il marque l’endroit exact de l’erreur dans le code source.

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).

Pour autant, des erreurs sérieuses ont été détectées :

  • 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.

Malgré les faux-positifs, l’utilité de cet outil est indéniable. D’autres outils existent également : MPD, CheckStyle.

Boris HUISGEN
Boris HUISGEN
Blog owner
  • #findbugs
  • #java