Neural Software Analysis

11/16/2020
by   Michael Pradel, et al.
7

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
05/28/2021

Learning to Extend Program Graphs to Work-in-Progress Code

Source code spends most of its time in a broken or incomplete state duri...
research
05/26/2021

Self-Supervised Bug Detection and Repair

Machine learning-based program analyses have recently shown the promise ...
research
04/28/2020

SCELMo: Source Code Embeddings from Language Models

Continuous embeddings of tokens in computer programs have been used to s...
research
02/05/2023

CBMC: The C Bounded Model Checker

The C Bounded Model Checker (CBMC) demonstrates the violation of asserti...
research
08/25/2019

Testing Neural Program Analyzers

Deep neural networks have been increasingly used in software engineering...
research
07/13/2017

Dependency Injection for Programming by Optimization

Programming by Optimization tools perform automatic software configurati...
research
03/06/2013

A Synthesis of Logical and Probabilistic Reasoning for Program Understanding and Debugging

We describe the integration of logical and uncertain reasoning methods t...

Please sign up or login with your details

Forgot password? Click here to reset