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.