Aller au contenu

FindBugs

Un article de Wikipédia, l'encyclopédie libre.
FindBugs
Description de l'image Logo FindBugs.png.

Informations
Développé par William Pugh (Université du Maryland)
Dernière version 3.0.1 ()[1]Voir et modifier les données sur Wikidata
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 Logiciel d'analyse statique de programmes (d)Voir et modifier les données sur Wikidata
Licence Licence publique générale limitée GNU version 2.0 (d)Voir et modifier les données sur Wikidata
Site web findbugs.sourceforge.netVoir et modifier les données sur Wikidata

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

[modifier | modifier le code]

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é

[modifier | modifier le code]

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[2] : 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[3] 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

[modifier | modifier le code]

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

[modifier | modifier le code]

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

[modifier | modifier le code]

Références

[modifier | modifier le code]
  1. (en) « http://findbugs.sourceforge.net » (consulté le )
  2. FindBugs Bug Descriptions Description des détecteurs de bug inclus par défaut dans FindBugs
  3. fb-contrib: Bug Descriptions Description des détecteurs de bug inclus dans fb-contrib

Liens externes

[modifier | modifier le code]