- Findbugs
-
FindBugs Maintainer: Bill Pugh Aktuelle Version: 1.3.8
(15. März 2009)Betriebssystem: Plattformübergreifend Programmiersprache: Java Kategorie: Quellcode-Analyse Lizenz: LGPL findbugs.sf.net FindBugs ist ein ein Open Source Programm ursprünglich von Bill Pugh und David Hovemeyer entwickelt, welches in Java-Code nach Fehlermustern sucht. Solche Fehlermuster deuten meist auf tatsächliche Fehler hin. Das Programm wurde von der University of Maryland aus initiiert, mittlerweile umfasst das Entwicklerteam fast ein Dutzend Personen[1].
Inhaltsverzeichnis
Funktionsweise
Das Programm kann über die Kommandozeile, eine eigenständige GUI, oder über Plugins für Entwicklungsumgebungen wie Eclipse gestartet werden. FindBugs analysiert Java Bytecode mittels statischer Code-Analyse auf der Suche nach bekannten Fehlermustern. Statisch bedeutet hier, dass die Suche nach Fehlern ausschließlich durch Untersuchung des Bytecodes passiert, ohne das zu analysierende Programm ausführen zu müssen. Da kompilierter Code durchsucht wird, kommt man ohne Quellcode aus.
Fehlermuster, beziehungsweise Sammlungen aus solchen, ergeben sich meist aufgrund komplizierter Funktionen der Programmiersprache, missverstandenen API-Methoden, missverstandenen Programmabläufen bei Überarbeitungen und Tippfehlern[2].
FindBugs kategorisiert die gefundenen Fehler um Falschmeldungen von tatsächlichen Fehler besser unterscheiden zu können. Dies wird durch eine zusätzliche Priorisierungen (z. B. Priorität Hoch) weiter unterstützt.
Das Projekt wird unter anderem von GlassFish und JavaServer Faces verwendet und finanziell von der University of Maryland, Google und Sun Microsystems unterstützt.[3]
Beispiel
Bei folgendem Programmabschnitt würde FindBugs einen Fehler der Art „Value is null and guaranteed to be dereferenced on exception path“ melden.
// ... Object einObjekt = new Object(); // ... if (einObjekt == null) System.out.println("Hash-Code= " + einObjekt.hashCode());
Bei dieser Abprüfung des Objektes auf
null
ist eine kleine Unachtsamkeit unterlaufen: die korrekte Absicherung sollte aufif (einObjekt != null)
lauten.Einzelnachweise
Weblinks
- Offizielle Webpräsenz (englisch)
- Benutzerhandbuch (englisch)
- Liste der FindBugs Fehlermuster (englisch)
Wikimedia Foundation.