Intelligent Code Completion Task
An Intelligent Code Completion Task is a Code Completion Task that learn from existing code repositories.
- Context:
- Input: a computer code word or statement typed by a software developer.
- Task Output: a set of autocomplete computer code suggestions.
- Task Requirement(s):
- a Code Repository;
- …
- It canbe solved by Intelligent Code Completion System that implements a Intelligent Code Completion Algorithm.
- It can range from being a Programming Auto-Completion Task to being a Integrated Development Environment Code Auto-Completion Task.
- Example(s):
- Counter-Example(s):
- a Command-Line Auto-Completion Task,
- a Context-Sensitive Code Completion Task (Asaduzzaman, 2018),
- a Deep TabNine Code Completion Task,
- a Natural Language Auto-Completion Task,
- a Qt Creator Auto-Completion Task,
- a Query Auto-Completion Task,
- a Spelling Error Correction Task,
- a Text Wikification Task,
- a WikiText Auto-Completion Task.
- See: Programming Language, Source Code, Auto-Completion Task, Reflection (Computer Science), Visual Studio, Code Completion, Variable (Programming), Subroutine, Method (Computer Science).
References
2019
- (Wikipedia, 2019) ⇒ https://en.wikipedia.org/wiki/Intelligent_code_completion Retrieved:2019-10-12.
- Intelligent code completion[1] is a context-aware code completion feature in some programming environments that speeds up the process of coding applications by reducing typos and other common mistakes. Attempts to do this are usually done through auto completion popups when typing, querying parameters of functions, query hints related to syntax errors, etc. Intelligent code completion and related tools serve as documentation and disambiguation for variable names, functions and methods using reflection. [2] Intelligent code completion appears in many program environments, [3] [4] an example implementation being Visual Studio's IntelliSense. The term was originally popularized as "picklist" and some implementations still refer to it as such. [5]
(...)
Intelligent code completion works using an automatically generated in-memory database of classes, variable names, and other constructs that the application being edited defines or references. The "classic" implementation of IntelliSense works by detecting marker characters such as periods, or other separator characters, depending on the language. When the user types one of these characters immediately after the name of an entity having one or more accessible members (such as contained variables or functions), IntelliSense suggests matches in a pop-up window. The user can either accept the suggestion by typing a statement completion character
Tab
orEnter
)—or a language-specific marker (such as the semicolon for C++), or continue typing the name. Over time, IntelliSense determines which variable or function the user most likely wants.
- Intelligent code completion[1] is a context-aware code completion feature in some programming environments that speeds up the process of coding applications by reducing typos and other common mistakes. Attempts to do this are usually done through auto completion popups when typing, querying parameters of functions, query hints related to syntax errors, etc. Intelligent code completion and related tools serve as documentation and disambiguation for variable names, functions and methods using reflection. [2] Intelligent code completion appears in many program environments, [3] [4] an example implementation being Visual Studio's IntelliSense. The term was originally popularized as "picklist" and some implementations still refer to it as such. [5]
- ↑ Bruch et al. (2009)
- ↑ Autocomplete | Define Autocomplete at Dictionary.com. Dictionary.reference.com. Retrieved on 2014-04-04.
- ↑ FAQ - CodeBlocks. Wiki.codeblocks.org (2014-02-01). Retrieved on 2014-04-04.
- ↑ Qt Documentation - Completing Code. Retrieved on 2015-07-07.
- ↑ Using Dynamic Apex to retrieve Picklist Values | Developer Force Blog. Blogs.developerforce.com (2008-12-09). Retrieved on 2014-04-04.
2015
- (Proksch et al., 2015) ⇒ Sebastian Proksch, Johannes Lerch, and Mira Mezini. (2015). “Intelligent Code Completion with Bayesian Networks.” In: ACM Transactions on Software Engineering and Methodology (TOSEM) Journal, 25(1). doi:10.1145/2744200
- QUOTE: Intelligent code completions better target the needs of developers that are unfamiliar with an API. The FrUiT tool (Bruch et al. 2006) and its successor using the Best-Matching Neighbor (BMN) algorithm [Bruch et al. 2009], which resulted in Eclipse Code Recommenders[1], are examples of intelligent code completion systems. They use code repositories containing clients of an API to build a knowledge base that contains common usages for different types of that API. On a completion event, the models learned from the repositories are used to show relevant proposals. Besides the static type of the variable on which code completion is triggered, these systems also consider some structural context of the code being developed to select the models from which to extract the recommendations. The method within which the completion system was triggered is an example of such a structural context.
2009
- (Bruch et al., 2009) ⇒ Marcel Bruch, Martin Monperrus, and Mira Mezini. (2009). “Learning from Examples to Improve Code Completion Systems.” In: Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. ISBN:978-1-60558-001-2 doi:10.1145/1595696.1595728
- QUOTE:
(...) we propose intelligent code completion systems that learn from existing code repositories by searching for code snippets where a variable of the same type as the variable for which the developer seeks advice is used in a similar context. We have built three prototype code completion engines of this kind, each using the information contained in repositories in different ways. The first prototype uses the frequency of method calls as a metric to decide about their relevance. The second code completion uses association rule mining to search the code repository for frequently occurring method pairs. Finally, the last and most advanced code completion system recommends method calls as a synthesis of the method calls of the closest source snippet found. To build this system, we have modified the k nearest neighbors algorithm [8], a classical and efficient machine learning algorithm, to fit the needs of code completion. We call the resulting algorithm best matching neighbors (BMN) algorithm.
To evaluate our hypothesis we use a large scale evaluation process for recommender systems, sketched in [6] , along with standard information retrieval performance measures. By large scale, we mean that the system is evaluated with a test bed of more than 27,000 test cases. The evaluation results prove the efficiency of the learning code completion engines in general and of the best matching neighbors (BMN) algorithm in particular. In order to demonstrate that the best matching neighbors (BMN) code completion algorithm, which gets the best quantitative evaluation, has the potential to increase developer productivity, we show how it can be seamlessly integrated into the default Eclipse development widgets and evaluate its usefulness by means of a user study.
(...) We present the prototype by elaborating on three main differences between of our prototype to the default Eclipse code completion system. Our statements are illustrated by figure 6, which shows a screenshot of our prototype.
- QUOTE: