Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Schriftliche Ausarbeitung - Alexander Willner | Masterarbeit
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
5. Implementierung und Test<br />
Objektcode. Bug-Patterns werden ausführlich anhand der Programmiersprache Java in einem<br />
Buch von E. Allen[57] beschrieben.<br />
Verwendete Software<br />
Eine detaillierte Analyse verschiedener Softwaresysteme für statische Testverfahren findet<br />
sich in [58]. Die Tabelle 5.1 gibt einen komprimierten Vergleich der in dieser Arbeit verwendeten<br />
Software wieder. Die jeweiligen Anwendungen konnten in die Entwicklungsumgebung<br />
integriert werden, um, wie bei der Überprüfung auf Einhaltung der Kodierungsrichtlinien,<br />
auch hier während der Programmierung direkt den Entwicklungsprozess zu<br />
unterstützen.<br />
Tabelle 5.1.: Analysierte Fehlertypen. Angelehnt an [58].<br />
Kategorie Beispiel FindBugs JLint PMD Lint4J<br />
Allgemeines Nullzeigerreferenzierung x x x x<br />
Nebenläufigkeit Auftritt von Deadlocks x x x x<br />
Array Länge kleiner 0 x x o o<br />
Mathematik Division durch Null o x o o<br />
Bedingungen Unerreichbarer Code x o x x<br />
Zeichenketten Stringvergleich mittels == x x x x<br />
E/A-Ströme Nicht geschlossener Strom x o o o<br />
Ungenutzte Anw. Ungenutzte lokale Variable x o x x<br />
Entwurf Leerer Konstruktor x o x x<br />
Unnötige Anw. Unnötiger Rückgabewert o o x x<br />
Performance Objekterzeugung in Schleifen x o x x<br />
FindBugs. FindBugs 3 [59] ist ein Erkennungsystem von Bug-Patterns für Java. Es nutzt<br />
verschiedene Techniken, um Präzision, Effizienz und Benutzbarkeit zu vereinen. Ein Hauptmerkmal<br />
ist die Verwendung von abstrakten Syntax-Bäumen (ähnlich zu [60]), um verdächtige<br />
Quelltextabschnitte zu identifizieren. In vielen Fällen werden auch Datenflussanalysen<br />
durchgeführt, etwa um Nullzeigerreferenzierung zu entdecken.<br />
JLint. JLint 4 [61] analysiert syntaktisch, wie FindBugs, den Java Bytecode und überprüft<br />
den Datenfluss im Programm. JLint erstellt zusätzlich einen Graphen aller Blockierungen,<br />
um zyklische Wiederholungen in diesem zu entdecken. Dies ermöglicht die Aufdeckung<br />
3 http://findbugs.sourceforge.net<br />
4 http://jlint.sourceforge.net<br />
53