- FindBugs
-
FindBugs Développeur William Pugh (Université du Maryland) Dernière version 1.3.9 (21 août 2009) [+/−] Environnement Java, Multi-plateforme Type Analyse statique de programmes Licence GNU LGPL Site web findbugs.sourceforge.net modifier 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.
Sommaire
Principe de fonctionnement
FindBugs est basé sur des plugins et des détecteurs de bug. 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 parcours 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é à 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 est.
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]: Deréférencement de pointeur null (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égrations:
- plugins pour Eclipse, NetBeans et IntelliJ IDEA
- plugins pour Apache Maven et Apache Ant
Logiciels utilisant les analyses de FindBugs
Voir aussi
Références
- FindBugs Bug Descriptions Description des détecteurs de bug inclus par défaut dans FindBugs
- fb-contrib: Bug Descriptions Description des détecteurs de bug inclus dans fb-contrib
Liens externes
- (en) Site officiel
- (en) Accueil du projet FindBugs sur SourceForge.net
- (en) fb-contrib™ un plugin avec détecteurs auxiliaires à Findbugs
Catégories :- Débogueur
- Logiciel libre sous licence LGPL
- Plateforme Java
Wikimedia Foundation. 2010.