Code Recommender Systems (Helping Developers use APIs)
Do you often spend time searching for how to use a specific library to accomplish your programming task? Do you wish there was a concise code example that you can just integrate into your project? You are not alone. Many developers spend considerable time searching for APIs to use, known issues with a code snippet, or for examples to help them learn a new technology or library. Code recommender systems save developers some of this time and pain. In this line of work, we investigate various types of code recommender systems (Code search, code completion, code generation, etc.) to help developers write better code faster. To build code recommender systems, we curate and build data sets (we need data to learn from and detect patterns we can recommend), build algorithms for code completion (e.g., using Bayesian networks to calculate the probability of a next call) or code search (e.g., using neural nets to find relations between code and text), and evaluate these techniques through quantitative empirical methods or qualitative methods (e.g., surveys or user studies). This is an ongoing line of work in our group with current active (and not yet published) research. See below for data sets and older related papers.
- A Dataset of Non-Functional Bugs, MSR '19
- Enriching In-IDE Process Information with Fine-grained Source Code History, SANER '17
- Evaluating the Evaluations of Code Recommender Systems: A Reality Check, ASE '16