Description
Abstract:
As computer programs continue to grow in their complexity, the number of bugs rises. One reason for this is that at some point, the complexity of the program reaches a point where a single programmer cannot realistically keep track of all the program invariants. Automated quality assurance tools attempt to solve this problem through the use of static or dynamic analysis. However, both approaches have their advantages and disadvantages. Static analysis, which is approximation-based, tends to be faster while producing many false positives. On the other hand, dynamic analysis can be very time-consuming, especially for larger programs, which dissuades from the use of dynamic analysis, even though it tends to be more precise. This thesis investigates ways of combining these techniques in an attempt to increase the precision of off-the-shelf static analysis tools. Additionally, since many projects are libraries, there is a focus on trying to support this kind of workflow for libraries via automated harness generation. In the evaluation, it was possible to make some correlations between the static and dynamic analysis results, but identifying false positives remains challenging.
Zusammenfassung:
Da Computerprogramme immer komplizierter werden, steigt auch die Anzahl an Schwachstellen. Ein Grund dafür ist, dass das Programm eventuell so komplex sein wird, dass kein einzelner Programmierer mehr alle Programm-Invarianten nachvollziehen kann. Automatisierte Qualitätssicherungssysteme versuchen genau dieses Problem durch den Einsatz statischer oder dynamischer Analyse zu lösen. Allerdings haben diese beide Methoden ihre eigenen Vor- und Nachteile. Die statische Analyse ist schnell, aber die Approximationen führen zu vielen Falschmeldungen. Im Gegensatz dazu ist die dynamische Analyse oft sehr zeitaufwändig, insbesondere bei komplexeren Programmen. Deswegen wird die dynamische Analyse häufig vermieden, obwohl sie genauere Ergebnisse liefern würde. In dieser Masterarbeit wird die Verbesserung der Genauigkeit der statischen Analyse durch die Kombination dieser Methoden angestrebt. Da es auch viele Bibliotheken gibt, die von diesem Ansatz profitieren würden, werden sie durch die automatisierte Erstellung von Harnischen unterstützt. Bei der Bewertung konnten einige Korrelationen zwischen den Ergebnissen der statischen und dynamischen Analyse festgestellt werden, aber es ist immer noch schwierig, Falschmeldungen zu erkennen.
|