LGAIPLOct 26, 2021

Neural Program Generation Modulo Static Analysis

arXiv:2111.01633v227 citations
AI Analysis

This addresses a long-horizon task in code generation for developers, though it is incremental as it builds on existing neurosymbolic methods.

The paper tackles the problem of generating entire Java method bodies, which neural models often fail at, by using weak supervision from a static program analyzer to compute long-distance semantic relationships; the approach substantially outperforms state-of-the-art transformers in producing error-free programs and matching ground truth syntax.

State-of-the-art neural models of source code tend to be evaluated on the generation of individual expressions and lines of code, and commonly fail on long-horizon tasks such as the generation of entire method bodies. We propose to address this deficiency using weak supervision from a static program analyzer. Our neurosymbolic method allows a deep generative model to symbolically compute, using calls to a static-analysis tool, long-distance semantic relationships in the code that it has already generated. During training, the model observes these relationships and learns to generate programs conditioned on them. We apply our approach to the problem of generating entire Java methods given the remainder of the class that contains the method. Our experiments show that the approach substantially outperforms state-of-the-art transformers and a model that explicitly tries to learn program semantics on this task, both in terms of producing programs free of basic semantic errors and in terms of syntactically matching the ground truth.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes