FindBugs

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 1 août 2013 à 10:28 et modifiée en dernier par Stephane.lecorne (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.
FindBugs
Description de l'image Logo FindBugs.png.

Informations
Développé par William Pugh (Université du Maryland)
Dernière version 2.0.0 ()
Dépôt github.com/findbugsproject/findbugsVoir et modifier les données sur Wikidata
Écrit en JavaVoir et modifier les données sur Wikidata
Environnement Java, Multi-plateforme
Type Analyse statique de programmes
Licence GNU LGPL
Site web findbugs.sourceforge.net

FindBugs est un logiciel libre d'analyse statique de bytecode Java. Son but est de trouver des bugs dans les programmes Java en identifiant des patterns reconnus comme étant des bugs.

FindBugs a été créé par William Pugh à l'université du Maryland et est distribué selon les termes de la licence GNU LGPL.

Principe de fonctionnement

FindBugs est basé sur des plugins et des détecteurs de bugs. Les plugins (sous forme de jar) contiennent un fichier xml décrivant les détecteurs qu'il contient ainsi que les détecteurs eux-mêmes.

FindBugs prend en entrée les fichiers .class à analyser et leur applique l'un après l'autre les détecteurs provenant des plugins. Chaque détecteur parcourt le bytecode Java et émet un avertissement lorsqu'il rencontre un ensemble d'instructions qui pourrait correspondre à un bug. Les avertissements sont collectés par FindBugs pour être présentés à l'utilisateur lorsque tous les détecteurs auront été exécutés. L'utilisateur pourra ensuite examiner le rapport de bug pour vérifier manuellement s'il y a bien un bug et le corriger si besoin.

La vérification manuelle des rapports de bugs est nécessaire car, comme tout outil d'analyse statique, FindBugs peut émettre des avertissements qui ne correspondent pas à de vrais bugs, ou des bugs qui ne peuvent jamais arriver en pratique. C'est ce que l'on appelle des "faux positifs". Malgré l'attention portée par les développeurs à réduire le taux de faux avertissements, il est impossible de tous les éliminer.

Tous les détecteurs n'ont pas la même complexité, et certains réclament plus de ressources (temps, processeur) pour s'exécuter. De plus les bugs trouvés sont plus ou moins importants et ils peuvent donc être classés par niveau de priorité.

Extensibilité

FindBugs peut être étendu à l'aide de plugins, il est ainsi possible d'écrire des détecteurs adaptés aux problèmes que l'on veut résoudre.

Il est déjà livré avec des détecteurs recherchant les bugs les plus communs[1] : Déréférencement de pointeur nul (NullPointerException), race conditions, etc.

Il existe également fb-contrib, un plugin pour FindBugs contenant un nombre important de détecteurs supplémentaires[2] qui n'ont pas été acceptés pour intégration dans le projet FindBugs. Cependant ces détecteurs sont suffisamment généraux pour intéresser tout programmeur Java.

Open Source

Il utilise Apache BCEL pour lire les fichiers .class et les parcourir. Une réflexion est en cours pour remplacer BCEL par ASM car ce dernier étant plus performant, il permettrait de réduire le temps d'exécution de Findbugs.

Intégration de FindBugs avec d'autres logiciels

FindBugs est distribué sous la forme d'une application stand-alone avec GUI. Il existe également différentes possibilités d'intégration :

Logiciels utilisant les analyses de FindBugs

Voir aussi

Références

  1. FindBugs Bug Descriptions Description des détecteurs de bug inclus par défaut dans FindBugs
  2. fb-contrib: Bug Descriptions Description des détecteurs de bug inclus dans fb-contrib

Liens externes