Statische Analysen sind Werkzeuge die Informationen von Programmen extrahieren ohne diese auszuführen. Statische Analysen haben vielseitige Anwendungen in integrierten Entwicklungsumgebungen (IDEs), Compilern und Continous Integration Servern. Zum Beispiel werden statische Analysen in IDEs verwendet um Programmfehler und Sicherheitslücken zu erkennen. Des Weiteren werden sie in Compilern zum Typechecking und für Optimierungen verwendet.

Dieser Kurs gibt einen Überblick über die zugrundeliegende Konzepte von statischen Analysen. Insbesondere diskutieren wir den Kompromiss zwischen der Performanz, der Präzision, und der Korrektheit von statischen Analysen. Des Weiteren werden Ihnen verschieden Sorten von statischen Analysen vorgestellt, wie zum Beispiel Kontrollflussanalysen, Datenflussanalysen, Zeigeranalysen, sowie Seiteneffekt- und Unveränderlichkeitsanalysen. Abschließend lernen sie verschiedene Analyseframeworks kennen, wie das monotone Framework, Big-Step Abstrakte Interpreter und IFDS/IDE Frameworks.

In der begleitenden Übung wenden Sie die neuen Analysekonzepte praktisch an, und erweitern oder entwicklen existierende Analysen.