Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.5555/2337223.2337324acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Active code completion

Published: 02 June 2012 Publication History

Abstract

Code completion menus have replaced standalone API browsers for most developers because they are more tightly integrated into the development workflow. Refinements to the code completion menu that incorporate additional sources of information have similarly been shown to be valuable, even relative to standalone counterparts offering similar functionality. In this paper, we describe active code completion, an architecture that allows library developers to introduce interactive and highly-specialized code generation interfaces, called palettes, directly into the editor. Using several empirical methods, we examine the contexts in which such a system could be useful, describe the design constraints governing the system architecture as well as particular code completion interfaces, and design one such system, named Graphite, for the Eclipse Java development environment. Using Graphite, we implement a palette for writing regular expressions as our primary example and conduct a small pilot study. In addition to showing the feasibility of this approach, it provides further evidence in support of the claim that integrating specialized code completion interfaces directly into the editor is valuable to professional developers.

References

[1]
G. C. Murphy, M. Kersten, and L. Findlater, "How are java software developers using the eclipse IDE?" IEEE Software, vol. 23, no. 4, pp. 76-83, 2006.
[2]
R. Robbes and M. Lanza, "How program history can improve code completion," in Proc. 23rd IEEE/ACM International Conference on Automated Software Engineering (ASE'08), 2008, pp. 317-326.
[3]
D. Hou and D. Pletcher, "An evaluation of the strategies of sorting, filtering, and grouping api methods for code completion," in Proc. 27th IEEE International Conference on Software Maintenance (ICSM'11), 2011, pp. 233-242.
[4]
H. M. Lee, M. Antkiewicz, and K. Czarnecki, "Towards a generic infrastructure for framework-specific integrated development environment extensions," in Proc. 2nd International Workshop on Domain-Specific Program Development (DSPD'08), co-located with OOPSLA'08, 2008.
[5]
S. Han, D. R. Wallace, and R. C. Miller, "Code completion from abbreviated input," in Proc. 2009 IEEE/ACM International Conference on Automated Software Engineering (ASE'09), 2009, pp. 332-343.
[6]
M. Bruch, M. Monperrus, and M. Mezini, "Learning from examples to improve code completion systems," in Proc. 7th European Software Engineering Conference & ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE'09), 2009, pp. 213-222.
[7]
J. Brandt, M. Dontcheva, M. Weskamp, and S. R. Klemmer, "Example-centric programming: integrating web search into the development environment," in Proc. 28th ACM Conference on Human Factors in Computing Systems (CHI'10), 2010, pp. 513-522.
[8]
M. Mooty, A. Faulring, J. Stylos, and B. Myers, "Calcite: Completing code completion for constructors using crowds," in Proc. 2010 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'10), 2010, pp. 15-22.
[9]
"Snipmatch." {Online}. Available: http://languageinterfaces. com/
[10]
J. Stylos, A. Faulring, Z. Yang, and B. A. Myers, "Improving API documentation using API usage information," in Proc. 2009 IEEE Symposium on Visual Language and Human-Centric Computing (VL/HCC'09), 2009, pp. 119-126.
[11]
C. Omar, Y. Yoon, T. LaToza, and B. Myers, "Active code completion," in Proc. 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC'11), 2011, pp. 261-262.
[12]
"reddit - programming." {Online}. Available: http://www. reddit.com/r/programming
[13]
E. Tempero, C. Anslow, J. Dietrich, T. Han, J. Li, M. Lumpe, H. Melton, and J. Noble, "Qualitas corpus: A curated collection of java code for empirical studies," in Proc. 2010 Asia Pacific Software Engineering Conference (APSEC'10), 2010.
[14]
B. Ellis, J. Stylos, and B. Myers, "The factory pattern in API design: A usability evaluation," in Proc. 29th International Conference on Software Engineering (ICSE'07), 2007, pp. 302-312.
[15]
B. C. Pierce, Types and Programming Languages. MIT Press, 2002.
[16]
"jquery: The write less, do more, javascript library." {Online}. Available: http://jquery.com/
[17]
T. L. Veldhuizen and D. Gannon, "Active libraries: Rethinking the roles of compilers and libraries," in Proc. 1998 SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing, 1998. {Online}. Available: http://arxiv.org/abs/math/9810022
[18]
P. Miller, J. Pane, G. Meter, and S. Vorthmann, "Evolution of novice programming environments: The structure editors of carnegie mellon university," Interactive Learning Environments, vol. 4, no. 2, pp. 140-158, 1994.
[19]
Ko, A. J., Myers, and B. A., "Barista: An implementation framework for enabling new tools, interaction techniques and views in code editors," in Proc. ACM Conference on Human Factors in Computing Systems (CHI'06), 2006, pp. 387-396.
[20]
S. Davis and G. Kiczales, "Registration-based language abstractions," in Proc. ACM international conference on Object oriented programming systems languages and applications (OOPSLA'10), 2010, pp. 754-773.
[21]
"Show color - online documentation - developer express inc." {Online}. Available: http://documentation.devexpress. com/#CodeRush/CustomDocument8887
[22]
"Color assistance." {Online}. Available: http://www.jetbrains.com/resharper/webhelp/Coding_ Assistance_Color_Assistance.html
[23]
"How to check your regexps in intellij idea 11?" {Online}. Available: http://blogs.jetbrains.com/idea/tag/regexp/
[24]
"Custom design-time control features in visual studio .net." {Online}. Available: http://msdn.microsoft.com/en-us/ magazine/cc164048.aspx

Cited By

View all
  • (2022)i-LaTeX : Manipulating Transitional Representations between LaTeX Code and Generated DocumentsProceedings of the 2022 CHI Conference on Human Factors in Computing Systems10.1145/3491102.3517494(1-16)Online publication date: 29-Apr-2022
  • (2021)Filling typed holes with live GUIsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454059(511-525)Online publication date: 19-Jun-2021
  • (2021)Représentations intermédiaires interactives pour la manipulation de code LaTeXProceedings of the 32nd Conference on l'Interaction Homme-Machine10.1145/3450522.3451325(1-11)Online publication date: 13-Apr-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '12: Proceedings of the 34th International Conference on Software Engineering
June 2012
1657 pages
ISBN:9781467310673

Sponsors

Publisher

IEEE Press

Publication History

Published: 02 June 2012

Check for updates

Qualifiers

  • Article

Conference

ICSE '12
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 11 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2022)i-LaTeX : Manipulating Transitional Representations between LaTeX Code and Generated DocumentsProceedings of the 2022 CHI Conference on Human Factors in Computing Systems10.1145/3491102.3517494(1-16)Online publication date: 29-Apr-2022
  • (2021)Filling typed holes with live GUIsProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454059(511-525)Online publication date: 19-Jun-2021
  • (2021)Représentations intermédiaires interactives pour la manipulation de code LaTeXProceedings of the 32nd Conference on l'Interaction Homme-Machine10.1145/3450522.3451325(1-11)Online publication date: 13-Apr-2021
  • (2019)Combining program analysis and statistical language model for code statement completionProceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering10.1109/ASE.2019.00072(710-721)Online publication date: 10-Nov-2019
  • (2019)SiameseEmpirical Software Engineering10.1007/s10664-019-09697-724:4(2236-2284)Online publication date: 1-Aug-2019
  • (2018)Effective API recommendation without historical software repositoriesProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238216(282-292)Online publication date: 3-Sep-2018
  • (2018)Reasonably programmable literal notationProceedings of the ACM on Programming Languages10.1145/32368012:ICFP(1-32)Online publication date: 30-Jul-2018
  • (2018)DeuceProceedings of the 40th International Conference on Software Engineering10.1145/3180155.3180165(654-664)Online publication date: 27-May-2018
  • (2017)Exploring regular expression comprehensionProceedings of the 32nd IEEE/ACM International Conference on Automated Software Engineering10.5555/3155562.3155616(405-416)Online publication date: 30-Oct-2017
  • (2017)Toward full elasticity in distributed static analysis: the case of callgraph analysisProceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering10.1145/3106237.3106261(442-453)Online publication date: 21-Aug-2017
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media