Winston : Type-Directed Synthesis and Repair

semanticscholar(2014)

引用 0|浏览0
暂无评分
摘要
Developing enterprise software often requires composing several libraries together with a large body of in-house code. Especially in object-oriented languages like Java, these libraries might add hundreds of classes, along with thousands of methods, constants, and functions to the environment, which adds a great deal of complexity for the developer to manage. Modern programming conventions favor composing many “small” objects together to create larger structures, or to delegate functionality or resource acquisition to other modules in a program. While useful, these techniques steepen the learning curve. A developer typically knows the approximate structure of the desired expression. However, often the first attempt at writing that code results in an ill-typed code fragment. We describe an algorithm and a tool called Winston that automatically repairs code expressions based on the provided almostcorrect code. At the core of our algorithm is a graph construction that expresses the relationships between the language’s types and methods. Such approach allows us to synthesize and repair expressions that are biased towards a given criteria by setting the edge weights appropriately. We implemented our algorithm as part of an IntelliJ IDEA plugin that proposes corrections for ill-typed expressions in the Java language. We tested Winston on synthesizing and repairing non-trivial expressions: it successfully returns the desired code snippet in a few milliseconds.
更多
查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要