Programme nutzen Zeichenketten (Strings), um alle Arten von Textdaten darzustellen – Namen, Kred- itkartennummern, E-Mail-Adressen, URLs, Bankkonten, Farbcodes und vieles mehr. Programmier- sprachen bieten jedoch nur wenig Unterstu ̈tzung, um zu u ̈berpru ̈fen, ob der Inhalt dieser Strings auch tatsa ̈chlich den Erwartungen entspricht. Dies kann nicht nur zu Funktionsfehlern, sondern auch zu ha ̈ufigen Angriffen wie Skript- oder SQL-Injektionen fu ̈hren.
In diesem Antrag fu ̈hren wir String-Typen ein – ein Mittel, um die gu ̈ltigen Werte von Strings mit Hilfe von formalen Sprachen wie regula ̈ren Ausdru ̈cken und Grammatiken auszudru ̈cken. Wir fu ̈hren Verfahren ein, um zu spezifizieren, welche Mengen von Strings als Werte akzeptabel sind, und um dynamisch und statisch zu pru ̈fen, ob das Programm in Bezug auf die spezifizierten String-Typen korrekt ist. Da es sich um formale Sprachen handelt, ermo ̈glichen String-Typen auch das Erzeugen von Instanzen aus diesen Spezifikationen. Hiermit wird ein massives automatisiertes Testen von String-Verarbeitungsfunktionen mit gu ̈ltigen Eingaben mo ̈glich, wobei String-Typen wiederum String-Ergebnisse auf lexikalische, syntaktische und semantische Korrektheit pru ̈fen. Schließlich fu ̈hren wir Mittel ein, um solche Spezifikationen aus dem Code und seinen Ausfu ̈hrungen zu erlernen, so dass String-Typen leicht einzufu ̈hren sind.
Die Antragsteller bringen umfangreiche Erfahrung in der statischen Analyse von Parsing-Code, der Generierung von Unit-Tests und Orakeln sowie sprachbasierter Spezifikation und Testen mit. Ihre gemeinsame Expertise wird diesen Antrag zum Erfolg fu ̈hren.