Bibliographic Metadata
Bibliographic Metadata
- TitleScaling static whole-program analysis to modern C and C++ software development : statically analyzing C and C++ software with PhASAR / Philipp Dominik Schubert ; Advisors: Prof. Dr. Eric Bodden, JProf. Dr. Ben Hermann
- Author
- Degree supervisor
- Published
- Description1 Online-Ressource (xii, 232 Seiten) Diagramme
- Institutional NoteUniversität Paderborn, Dissertation, 2024
- AnnotationTag der Verteidigung: 21.10.2024
- Defended on2024-10-21
- LanguageEnglish
- Document TypesDissertation (PhD)
- Keywords (GND)
- URN
- DOI
Links
- Social MediaShare
- Reference
- IIIF
Files
Classification
Zusammenfassung
Statische Analysen mit dem Ziel Bugs und Sicherheitslücken zu finden, müssen präzise und inter-prozedural, d.h. das gesamte Programm umfassend, sein, um Ergebnisse berechnen zu können, die Entwickler:innen tatsächlich helfen. Analysen, die das gesamte Programm überspannen, führen jedoch leider oftmals zu unzureichender Performanz. In dieser Arbeit zeigen wir wie Whole-Program-Analysen in der Praxis dennoch ermöglicht werden können. Das erste Problem, welches bei der Analyse von C und C++ Software gelöst werden muss, ist, dass jedes nicht-triviale Programm auf Grund des Präprozessors in einer gemischten Sprache geschrieben ist und dadurch eine Software-Produktlinie darstellt. Aus diesem Grund präsentieren wir VarAlyzer, einen varabilitäts-bewussten statischen Analyseansatz, der Software-Produktlinien stattdessen als Ganzes analysiert. Um die unnötige wiederholte Analyse von Bibliothekskomponenten, die sich von einem Analyselauf zum nächsten nicht ändern, zu vermeiden, führen wir den kompositionalen Analyseansatz ModAlyzer ein, der Bibliothekskomponenten analysiert und zusammenfasst. Die Analysezusammenfassungen können dann eingesetzt werden, wenn die eigentliche Anwendung analysiert wird, um die Analysezeiten siginifikant zu reduzieren. Um weitere unnötige, wiederholte Analysen für Programmteile zu vermeiden, die häufigen Änderungen unterliegen, stellen wir IncAlyzer vor. IncAlyzer nutzt die Informationen zu den Commits eines Projekts aus, die durch die Versions-Kontrollsysteme der Zielprojekte bereit gestellt werden. Mit diesen Informationen werden Analysen lediglich für die Programmteile erneut berechnet, die sich tatsächlich geändert haben. Dies reduziert die Laufzeiten auch für tiefe, semantische Programmanalysen auf ein Minimum.
Abstract
Static analyses that aim at detecting bugs and security breaches have to be precise and inter-procedural, i.e., must span the whole program to compute results that are actually useful to developers. Analyses run in a whole-program manner, however, oftentimes lead to unsatisfactory performance. In this work, we show how to make precise static whole-program analysis feasible in practice. The first problem that needs to be addressed when analyzing C and C++ software is that every non-trivial program, due to the preprocessor, is written in a mixed language and represents a software product line. We therefore present VarAlyzer, a variability-aware static analysis approach that analyzes software product lines as a whole. To avoid unnecessary, repeated reanalysis of library components that do not change from one analysis run to another, we introduce ModAlyzer, a compositional analysis approach that analyzes and summarizes library components. These summaries can then be employed while analyzing the actual application code to significantly reduce analysis times. To further avoid unnecessary reanalysis for parts of the code that do undergo frequent changes, but whose static analysis results computed in a previous analysis run are still valid, we present IncAlyzer. IncAlyzer exploits commit information provided by the target project's version control system to recompute analysis information only for the parts of the code that actually changed. This reduces analysis times---even for deep, semantic analysis---to a minimum.
Content
Stats
- The PDF-Document has been downloaded 91 times.
License/Rightsstatement