Statische Analysen sind Werkzeuge, die Informationen über Programmen extrahieren, ohne diese auszuführen.
Statische Analysen haben vielseitige Anwendungen in der Erkennung von Bugs, Sicherheitslücke und Schadsoftware, in Typechecking und Optimierung während des Kompilierens sowie als Grundlage für die formale Verifikation von Programmen.
Daher sind sie ein wichtiges Werkzeug, um die Korrektheit, Sicherheit und Performanz von Software sicherzustellen.

Dieser Kurs gibt einen Überblick über die zugrundeliegende Konzepte von statischen Analysen.
Der Kurs wird wichtige Programmeigenschaften vorstellen, die von statischen Analysen hergeleitet werden, darunter Kontrollfluss, Datenflüsse, Callgraphen, Points-To, Purity und Immutability.
Sie lernen auch Algorithmen und Frameworks kennen, die verwendet werden, um diese Eigenschaften herzuleiten, darunter Typsysteme, abstrakte Interpreter und IFDS/IDE.
Schließlich werden wir auch Abwägungen zwischen Präzision, Korrektheit und Performanz statischer Analysen diskutieren.

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