Neural Software Analysis: Learning Developer Tools from Code

Decanato - Facoltà di scienze informatiche

Data: 7 Aprile 2022 / 14:30 - 15:30

USI Campus EST, room C1.03, Sector C // online on MS Teams

You can join here

Speaker: Prof. Michael Pradel, University of Stuttgart, Germany

Many software development problems can be addressed by program analysis tools, which traditionally are based on precise, logical reasoning and heuristics to ensure that the tools are practical. Recent work has shown tremendous success through an alternative way of creating developer tools, which we call "neural software analysis". The key idea is to train a neural machine learning model on numerous examples of code or executions, which, once trained, makes predictions about previously unseen software. In contrast to traditional program analysis, neural software analysis naturally handles fuzzy information, such as coding conventions and natural language embedded in code, without relying on manually encoded heuristics. This talk presents the overall idea of neural software analysis and when to (not) use it. We then present two examples of neural software analysis: (1) Nalin, an analysis to detect inconsistencies between variables names and the values stored in a variable. (2) TypeWriter, a learned type predictor that automatically adds otherwise missing type annotations into code written in a dynamically typed language. Both approaches complement and outperform traditional analyses, and TypeWriter has been successfully used in industrial practice.

Michael Pradel is a full professor at University of Stuttgart, which he joined after a PhD at ETH Zurich, a post-doc at UC Berkeley, an assistant professorship at TU Darmstadt, and a sabbatical at Facebook. His research interests span software engineering, programming languages, security, and machine learning, with a focus on tools and techniques for building reliable, efficient, and secure software. In particular, he is interested in dynamic program analysis, test generation, concurrency, performance profiling, JavaScript-based web applications, and machine learning-based program analysis. Michael has been awarded the Software Engineering Award of the Ernst-Denert-Foundation for his dissertation, the Emmy Noether grant by the German Research Foundation (DFG), and an ERC Starting Grant.