FindBugs
FindBugs ist eine freie Software, welche in Java-Programmen nach Fehlermustern sucht. Solche Fehlermuster deuten oft auf tatsächliche Fehler hin. Das Programm wurde von der University of Maryland aus initiiert und ursprünglich von Bill Pugh und David Hovemeyer entwickelt.
FindBugs | |
---|---|
Basisdaten | |
Entwickler | William Pugh |
Aktuelle Version | 3.0.1[1] (6. März 2015) |
Betriebssystem | Plattformübergreifend |
Programmiersprache | Java[2] |
Kategorie | Bytecode-Analyse |
Lizenz | GNU Lesser General Public License, Version 2.0[3] |
findbugs.sourceforge.net |
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 Schnittstellen, missverstandenen Programmabläufen bei Überarbeitungen und Tippfehlern[4].
FindBugs kategorisiert die gefundenen Fehler, um Falschmeldungen von tatsächlichen Fehlern besser unterscheiden zu können. Dies wird durch eine zusätzliche Priorisierung (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.[5]
Mit der Version 2.0 findet FindBugs eine Reihe neuer Fehlermuster. Darüber hinaus unterstützt FindBugs ab der Version 2.0 Plugins für Cloud Computing und verbessert die Verbindung zu Fehlerverwaltungssystemen wie Jira oder Google Code.
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 auf if (einObjekt != null)
lauten.
Nachfolger
Nachdem der Maintainer Bill Pugh über längere Zeit nicht erreichbar war, wurde von Andrey Loskutov und weiteren Beteiligten das Projekt SpotBugs als Nachfolger erstellt.[6][7] Im Oktober 2017 erschien die erste Version 3.1.0.[8]
Einzelnachweise
- findbugs.sourceforge.net. (englisch, abgerufen am 29. September 2016).
- The findbugs Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 6. September 2018).
- sourceforge.net. In: SourceForge. (abgerufen am 27. Dezember 2016).
- FindBugs: Fakten
- FindBugs: Benutzer und Unterstützer
- Project status Nov 2016
- Announcing SpotBugs as FindBugs successor
- SpotBugs 3.1.0 released
Weblinks
- Offizielle Webpräsenz (englisch)
- Benutzerhandbuch (englisch)
- Liste der FindBugs Fehlermuster (englisch)