Final Thesis: Identifikation von Quellcodestellen mit hoher Fehlerwahrscheinlichkeit durch maschinelle Lernverfahren

Abstract: Die frühzeitige Identifikation von Fehlern im Softwareentwicklungsprozess ist ein wichtiger Bestandteil moderner Entwicklung. Diese Arbeit befasst sich mit Korrelationsuntersuchungen zwischen quantifizierten Softwareartefakten und Fehlerauftreten mithilfe maschineller Lernverfahren. Mit dem Ziel der besseren Teilung von Forschungsergebnissen veröffentlicht diese Arbeit ein nach Arc42 standardkonform dokumentiertes Open-Source-Framework als Basis für weitere Forschungen und für die Entwicklung Fehler identifizierender Programme. Für die Quantifizierung, von Dateien eines Git-Commits, wurde ein Plugin zur Unterstützung von SonarQube entwickelt. SonarQube ist in der Lage diverse Softwaremetriken für bis zu 29 Programmiersprachen zu messen. Zur Annotation Fehler-behebender Commits wurde die Commit-Nachricht und die geänderten Dateien analysiert. Es wurden exemplarisch Dateien aus 10.000 Commits des Open-Source-Projekts TypeScript quantifiziert und annotiert. Es wurden 233 Features über die letzten fünf Änderungen einer Datei berücksichtigt, um die Anzahl der Fehlerbehebungen der nächsten fünf Änderungen vorherzusagen. Dieser Lerndatensatz wurde veröffentlicht. Verschiedene Verfahren des maschinellen Lernens wurden getestet, darunter automatisches maschinelles Lernen mit TPOT und H2O. Ein Modell konnte mit einer Accuracy von 83% die richtige Klasse vorhersagen, der durchschnittliche absolute Fehler betrug 0,18, der gewichtete Durchschnitt der F1-Scores betrug 81%, der ungewichtete betrug, aufgrund des geringen Supports der Klassen drei und vier, 42%. Es wurden alle Klassen über eins auf eins gesetzt und binäre Klassifikatoren entwickelt. Die besten erzielten eine AUC der ROC-Kurve von 0,89.

PDF: Master Thesis

Reference: Robert Klinger. Identifikation von Quellcodestellen mit hoher Fehlerwahrscheinlichkeit durch maschinelle Lernverfahren. Master Thesis. Friedrich-Alexander-Universität Erlangen-Nürnberg: 2021.