论文标题

神经软件分析

Neural Software Analysis

论文作者

Pradel, Michael, Chandra, Satish

论文摘要

程序分析工具可以解决许多软件开发问题,这些工具传统上是基于精确的,逻辑推理和启发式方法,以确保工具是实用的。最近的工作通过创建开发人员工具的替代方式显示了巨大的成功,我们称之为神经软件分析。关键思想是在众多代码示例上训练神经机器学习模型,一旦训练,该模型就对以前看不见的代码做出了预测。与传统程序分析相反,神经软件分析自然处理模糊信息,例如编码惯例和嵌入代码中的自然语言,而无需依赖手动编码的启发式方法。本文概述了神经软件分析,讨论何时(不)使用它,并提供了三个示例分析。分析解决了具有挑战性的软件开发问题:错误检测,输入预测和代码完成。最终的工具补充了传统计划分析,并用于工业实践。

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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源