HyperAIHyperAI
vor 2 Monaten

Lernende Typinferenz für verbesserte Datenflussanalyse

Seidel, Lukas ; Effendi, Sedick David Baker ; Pinho, Xavier ; Rieck, Konrad ; van der Merwe, Brink ; Yamaguchi, Fabian
Lernende Typinferenz für verbesserte Datenflussanalyse
Abstract

Die statische Analyse dynamisch typisierter Code ist eine herausfordernde Aufgabe, da selbst scheinbar triviale Aufgaben wie die Bestimmung der Ziele von Prozeduraufrufen ohne Kenntnis der Objekttypen zur Kompilierzeit nicht einfach sind. Um dieser Herausforderung zu begegnen, wird graduell Typisierung zunehmend in dynamisch typisierte Sprachen integriert, wobei TypeScript ein prominentes Beispiel ist, das JavaScript statische Typisierung hinzufügt. Graduelle Typisierung verbessert die Fähigkeit der Entwickler, das Programmverhalten zu überprüfen und trägt zu robusten, sicheren und fehlerfreundlichen Programmen bei. In der Praxis fügen Benutzer jedoch nur selten direkt Typanmerkungen hinzu. Gleichzeitig stellen herkömmliche Typinferenz vor leistungsbezogene Herausforderungen, wenn die Programmgröße zunimmt. Statistische Techniken auf Basis maschinellen Lernens bieten eine schnellere Inferenz, obwohl jüngste Ansätze insgesamt eine verbesserte Genauigkeit zeigen, performen sie bei benutzerdefinierten Typen signifikant schlechter als bei den am häufigsten verwendeten eingebauten Typen. Sie begrenzen ihre praktische Nutzbarkeit noch stärker dadurch, dass sie selten in benutzerorientierte Anwendungen integriert werden. Wir schlagen CodeTIDAL5 vor, ein auf Transformer basierendes Modell, das darauf trainiert wurde, Typanmerkungen zuverlässig vorherzusagen. Für effektive Ergebnisrückgewinnung und -reintegration extrahieren wir Verwendungsschnitte aus dem Code-Eigenschafts-Graph des Programms. Im Vergleich zu jüngsten neuronalen Typinferenzsystemen übertrifft unser Modell den aktuellen Stand der Technik um 7,85 % im ManyTypes4TypeScript-Benchmark und erreicht insgesamt 71,27 % Genauigkeit. Darüber hinaus präsentieren wir JoernTI, eine Integration unserer Methode in Joern, ein Open-Source-Tool für statische Analyse, und zeigen, dass die Analyse von den zusätzlichen Typprüfungen profitiert. Da unser Modell auch auf gängigen CPUs schnelle Inferenzzeiten ermöglicht, führt die Bereitstellung unseres Systems durch Joern zu hoher Zugänglichkeit und erleichtert Sicherheitsforschung.