NLP2Code: Code Snippet Content Assist via Natural Language Tasks

  title={NLP2Code: Code Snippet Content Assist via Natural Language Tasks},
  author={Brock Angus Campbell and Christoph Treude},
  journal={2017 IEEE International Conference on Software Maintenance and Evolution (ICSME)},
Developers increasingly take to the Internet for code snippets to integrate into their programs. To save developers the time required to switch from their development environments to a web browser in the quest for a suitable code snippet, we introduce NLP2Code, a content assist for code snippets. Unlike related tools, NLP2Code integrates directly into the source code editor and provides developers with a content assist feature to close the vocabulary gap between developers' needs and code… 

Figures and Tables from this paper

Optimising the fit of stack overflow code snippets into existing code

An automated code reuse tool for the Eclipse IDE, NLP2TestableCode, which can not only search for Java code snippets using natural language tasks, but also evaluate code snippets based on a user's existing code, modify snippets to improve fit and correct errors, before presenting the user with the best snippet, all without leaving the editor.

NLI2Code: Reusing Libraries with Natural Language Interface

An abstract framework NLI2Code is designed to illustrate how to build and use LibNLI, a domain-specific language encapsulating APIs into library functions, which is more high-level and instructive than library APIs.

NCQ: code reuse support for Node.js developers

Node Code Query is presented, a Read-Eval-Print-Loop environment that allows developers to search for NPM packages using natural language queries, and search for code snippets related to those packages, and suggests that NCQ makes Node.js developers morecient in reusing code.

Deep Code Search

A novel deep neural network named CODEnn (Code-Description Embedding Neural Network) is proposed, which jointly embeds code snippets and natural language descriptions into a high-dimensional vector space, in such a way that code snippet and its corresponding description have similar vectors.

Natural Language Processing Techniques for Code Generation

source code has similarities to natural language, hence NLP techniques have been successfully used to generate code, and the area has also benefited from recent deep learning based advances in NLP.

In-IDE Code Generation from Natural Language: Promise and Challenges

This article develops a plugin for the PyCharm IDE that implements a hybrid of code generation and code retrieval functionality and asks developers with various backgrounds to complete 7 varieties of 14 Python programming tasks ranging from basic file manipulation to machine learning or data visualization, with or without the help of the plugin.

CodeMatcher: Searching Code Based on Sequential Semantics of Important Query Words

An IR-based model CodeMatcher is proposed that inherits the advantages of DeepCS (i.e., the capability of understanding the sequential semantics in important query words), while it can leverage the indexing technique in the IR- based model to accelerate the search response time substantially.

Joint Embedding of Semantic and Statistical Features for Effective Code Search

This work proposes a joint embedding model of semantic and statistical features to improve the effectiveness of code annotation, and implements a code search engine, i.e., JessCS, based on the jointembedding model.

Generating Context-Aware API Calls from Natural Language Description Using Neural Embeddings and Machine Translation

This paper proposes a context-aware tool called API Call Programming Interface (ACPI) which allows developers to write a natural language description for methods within source code and get correct and compilable API Call (AC) based on the text description and surrounding code.



Bing developer assistant: improving developer productivity by recommending sample code

A tool called Bing Developer Assistant (BDA), which improves developer productivity by recommending sample code mined from public software repositories and web pages (such as Stack Overflow), which can automatically mine code snippets that implement an API or answer a code search query.

Prompter: A Self-Confident Recommender System

Prompter is presented, a plug-in for the Eclipse IDE which automatically searches and identifies relevant Stack Overflow discussions, evaluates their relevance given the code context in the IDE, and notifies the developer if and only if a user-defined confidence threshold is surpassed.

Making sense of online code snippets

This analysis is able to identify 253,137 method calls and type references from 21,250 Stack Overflow code snippets and shows how identifying structural relationships from snippets could perform better than lexical search over code blocks in practice.

SWIM: Synthesizing What I Mean - Code Search and Idiomatic Snippet Synthesis

SWIM, a tool which suggests code snippets given API-related natural language queries such as "generate md5 hash code" is described, which translates user queries into the APIs of interest using clickthrough data from the Bing search engine.

T2API: synthesizing API code usage templates from English texts with statistical translation

A statistical machine translation-based tool that takes a given English description of a programming task as a query, and synthesizes the API usage template for the task by learning from training data, and is capable of generating new API usages from smaller, previously-seen usages.

Understanding Stack Overflow Code Fragments

It is found that less than half of the Stack Overflow code fragments in this sample are considered to be self-explanatory by the 321 participants who answered the survey, and that the main issues that negatively affect code fragment understandability include incomplete fragments, code quality, missing rationale, code organization, clutter, naming issues, and missing domain information.

Seahawk: Stack Overflow in the IDE

Seahawk is an Eclipse plugin that supports an integrated and largely automated approach to assist programmers using Stack Overflow, and formulates queries automatically from the active context in the IDE, presents a ranked and interactive list of results, and lets users import code samples in discussions through drag & drop.

Jigsaw: a tool for the small-scale reuse of source code

This paper presents a tool, called Jigsaw, that uses thedeveloper's context to help integrate the reused source code into the developer's own source code.

Example Overflow: Using social media for code recommendation

Examples Overflow is presented, a code search and recommendation tool which brings together social media and code recommendation systems and enables crowd-sourced software development by utilizing both textual and social information, which accompany source code on the Web.

Learning from examples to improve code completion systems

Evidence is given that intelligent code completion systems which learn from examples significantly outperform mainstream codepletion systems in terms of the relevance of their suggestions and thus have the potential to enhance developers' productivity.