FindBugs




Allgemeines

FindBugs ist ein Open Source Programm, das statische Code Analyse verwendet um Java Programme auf zahlreiche Bugs zu untersuchen. Das Tool ist in Java geschrieben und kann Programme jeder Java Version überprüfen.

FindBugs basiert auf dem Konzept der Bug Patterns. Diese sind verwandt mit den Anti Patterns (Software Design Muster, die erwiesenermaßen immer wieder fehlschlagen). Im Gegensatz zu den Anti Patterns, welche Design Muster darstellen, sind Bug Patterns Muster von fehlerhaftem Programmverhalten in Verbindung mit Programmierfehlern.

FindBugs untersucht nun Java Bytecode nach diesen Mustern. Der Quelltext wird also nicht benötigt, nur das Kompilat (.class Dateien) muss vorhanden sein. Der Quelltext reicht natürlich auch aus, er muss dann nur vor der Untersuchung kompiliert werden.

FindBugs stellt eine Plugin Architektur bereit, die es jedem erlaubt eigene Bug Detektoren hinzuzufügen, sofern man mit dem Java Bytecode vertraut ist. Um den Bytecode zu analysieren benutzt FindBugs die Byte Code Engineering Library (BCEL) von Apache.

Die Analyse von FindBugs ist teilweise ungenau und es kommt zu sogenannten false warnings, also Meldungen die bei einer korrekten Codestelle einen Bug anzeigen. Laut den Entwicklern liegt die Rate dieser Falschmeldungen in der Praxis bei unter 50%.


Bug Kategorien

FindBugs teilt die Bugs, nach denen gesucht wird in verschiedene Kategorien auf:

Anwendung unter Eclipse

Über die Projekteinstellungen gelangt man zu den Einstellungen des Plugins. Hiererhält man eine Übersicht über alle verfügbaren Bug Detektoren und Informationen über diese (Bug ID, Geschwindigkeit, Kategorie, Beschreibung). Diese Detektoren sowie gesamte Bug Kategorien lassen sich hier an- bzw. ausschalten.

 

Durch einen Rechtsklick auf ein Projekt, ein Paket, eine Klasse oder ein Interface und Auswählen des Menüpunkts Find Bugs > Find Bugs wird das Paket/die Klasse/... auf Bugs untersucht.

 

Die gefundenen Bugs erkennt man an den Käfern am linken Rand des Editorfensters und im "Problems"-Fenster. Die Farbe der Käfer entspricht der Priorität des Bugs: rot (hoch), orange (normal), gelb (niedrig). Sind in einer Zeile mehrere Bugs enthalten so entspricht die Farbe des Käfers der Priorität des ersten gefundenen Bugs.

Die Bugbeschreibung erhält man entweder indem man mit der Maus über einen Käfer fährt oder im "Problems"-Fenster. Vor der Beschreibung des jeweiligen Bugs stehen immer mehrere Großbuchstaben. Diese geben Folgendes an:

 

Hier wurden nun u.a. folgende Bugs erkannt: