EdSketch: execution-driven sketching for Java

Jinru Hua,Yushan Zhang,Yuqun Zhang,Sarfraz Khurshid
DOI: https://doi.org/10.1007/s10009-019-00512-8
2019-03-16
International Journal on Software Tools for Technology Transfer
Abstract:<p>Sketching is a synthesis approach that allows users to provide high-level insights into a synthesis problem and let synthesis tools complete low-level details. Users write <em>sketches</em>—partial programs that have "holes" and provide test assertions as the correctness criteria. The sketching techniques fill the holes with code fragments such that the complete program satisfies all test assertions. Traditional techniques translate the sketching problem to propositional satisfiability formulas and leverage SAT solvers to generate programs with the desired functionality. While effective for a range of small well-defined domains, such translation-based approaches have a key limitation when applying to real applications: They require either translating all relevant libraries that are invoked directly or indirectly by the given sketch or creating models of those libraries, which requires much manual effort. This paper introduces <em>execution-driven sketching</em>, a novel approach for synthesizing Java programs with <em>on-demand</em> candidate generation. The key novelty of our work is to leverage runtime behavior to prune a large amount of search space. <span>EdSketch</span> explores the actual program behaviors <em>in the presence</em> of libraries and sketches small parts of real-world applications, which may use complex constructs of modern languages, such as reflection, native calls and File I/O. We further leverage a set of pruning strategies based on Java syntax to expedite the synthesis process. <span>EdSketch</span> embodies our approach in two forms: a stateful search based on the Java PathFinder model checker; and a stateless search based on re-execution inspired by the <span>VeriSoft</span> model checker. Experimental results show that <span>EdSketch</span> can complete some sketches that contain complex constructs in the presence of libraries, recursive procedures and advanced features like reflection. Without translating to SAT, <span>EdSketch</span> 's performance compares well with the SAT-based <span>Sketch</span> system for a range of small but complex data structure subjects.</p>
computer science, software engineering
What problem does this paper attempt to address?