Neural Software Analysis
This approach addresses challenging software development problems for developers by providing tools that handle fuzzy information without manual heuristics, though it is incremental as it builds on existing neural methods applied to code.
The paper tackles software development problems by introducing neural software analysis, which uses neural models trained on code examples to make predictions, and shows that the resulting tools complement and outperform traditional program analyses in tasks like bug detection, type prediction, and code completion.
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 code examples, which, once trained, makes predictions about previously unseen code. 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 article gives an overview of neural software analysis, discusses when to (not) use it, and presents three example analyses. The analyses address challenging software development problems: bug detection, type prediction, and code completion. The resulting tools complement and outperform traditional program analyses, and are used in industrial practice.