skip to main content
article

Improving code completion with program history

Published: 01 June 2010 Publication History
  • Get Citation Alerts
  • Abstract

    Code completion is a widely used productivity tool. It takes away the burden of remembering and typing the exact names of methods or classes: As a developer starts typing a name, it provides a progressively refined list of candidates matching the name. However, the candidate list usually comes in alphabetic order, i.e., the environment is only second-guessing the name based on pattern matching, relying on human intervention to pick the correct one. Finding the correct candidate can thus be cumbersome or slower than typing the full name.
    We present an approach to improve code completion based on recorded program histories. We define a benchmarking procedure measuring the accuracy of a code completion engine and apply it to several completion algorithms on a dataset consisting of the history of several systems. Further, we use the change history data to improve the results offered by code completion tools. Finally, we propose an alternative interface for completion tools that we released to developers and evaluated.

    References

    [1]
    Arisholm, E., Gallis, H., Dybå, T., Sjøberg, D.I.K.: Evaluating pair programming with respect to system complexity and programmer expertise. IEEE Trans. Softw. Eng. 33(2), 65-86 (2007).
    [2]
    Bajracharya, S., Ngo, T., Linstead, E., Dou, Y., Rigor, P., Baldi, P., Lopes, C.: Sourcerer: a search engine for open source code supporting structure-based search. In: OOPSLA '06: Companion to the 21st ACM SIGPLAN Symposium on Object-Oriented Programming Systems, Languages, and Applications, pp. 681-682. ACM, New York (2006). http://doi.acm.org/10.1145/1176617.1176671
    [3]
    Bruch, M., Monperrus, M., Mezini, M.: Learning from examples to improve code completion systems. In: ESEC/FSE'09: Proceedings of the 7th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 213-222 (2009).
    [4]
    Conradi, R., Westfechtel, B.: Version models for software configuration management. ACM Comput. Surv. 30(2), 232-282 (1998).
    [5]
    Dehnadi, S., Bornat, R.: The camel has two humps (working title) (2006). http://www.cs.mdx.ac.uk/ research/PhDArea/saeed/paper1.pdf
    [6]
    Fazly, A.: The use of syntax in word completion utilities. Master's thesis, University of Toronto (2002).
    [7]
    Murphy, G., Kersten, M., Findlater, L.: How are java software developers using the eclipse ide? IEEE Softw. (2006).
    [8]
    Kersten, M., Murphy, G.C.: Using task context to improve programmer productivity. In: FSE '06: Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 1-11 (2006).
    [9]
    Little, G., Miller, R.C.: Keyword programming in Java. In: ASE '07: Proceedings of the 22nd International Conference on Automated Software Engineering, pp. 84-93 (2007).
    [10]
    Lung, J., Aranda, J., Easterbrook, S.M., Wilson, G.V.: On the difficulty of replicating human subjects studies in software engineering. In: ICSE '08: Proceedings of the 30th International Conference on Software Engineering, pp. 191-200 (2008).
    [11]
    Miller, G.A.: The magical number seven. plus or minus two: Some limits on our capacity for processing information. Psychol. Rev. 63, 81-97 (1956). http://users.ecs.soton.ac.uk/~harnad/Papers/Py104/ Miller/miller.html
    [12]
    Reiss, S.P.: Semantics-based code search. In: ICSE '09: Proceedings of the 31st International Conference on Software Engineering, pp. 243-253 (2009).
    [13]
    Robbes, R.: Mining a change-based software repository. In: MSR '07: Proceedings of Fourth International Workshop on Mining Software Repositories, p. 15. ACM Press, New York (2007).
    [14]
    Robbes, R., Lanza, M.: An approach to software evolution based on semantic change. In: FASE '07: Proceedings of the 10th International Conference on Fundamental Approaches to Software Engineering, pp. 27-41 (2007a).
    [15]
    Robbes, R., Lanza, M.: Characterizing and understanding development sessions. In: ICPC '07: Proceedings of the 15th International Conference on Program Comprehension, pp. 155-164 (2007b).
    [16]
    Robbes, R., Lanza, M.: Spyware: a change-aware development toolset. In: ICSE '08: Proceedings of the 30th International Conference on Software Engineering, pp. 847-850 (2008).
    [17]
    Sharon, Y.: Eclipseye--spying on eclipse. Bachelor's thesis, University of Lugano (2007).
    [18]
    Sim, S.E., Easterbrook, S.M., Holt, R.C.: Using benchmarking to advance research: A challenge to software engineering. In: ICSE '03: Proceedings of the 25th International Conference on Software Engineering, pp. 74-83 (2003).
    [19]
    Sim, S.E., Holt, R.C., Easterbrook, S.: On using a benchmark to evaluate C++ extractors. In: IWPC '02: Proceedings of the 10th International Workshop on Program Comprehension, p. 114. IEEE Computer Society, Washington (2002).
    [20]
    Wuyts, R.: Roeltyper: a fast type reconstructor for smalltalk. http://decomp.ulb.ac.be/roelwuyts/smalltalk/ roeltyper/ (2007).

    Cited By

    View all
    • (2024)Significant Productivity Gains through Programming with Large Language ModelsProceedings of the ACM on Human-Computer Interaction10.1145/36611458:EICS(1-29)Online publication date: 17-Jun-2024
    • (2024)Non-Autoregressive Line-Level Code CompletionACM Transactions on Software Engineering and Methodology10.1145/364959433:5(1-34)Online publication date: 26-Feb-2024
    • (2024)On the Generalizability of Deep Learning-based Code Completion Across Programming Language VersionsProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644411(99-111)Online publication date: 15-Apr-2024
    • Show More Cited By

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image Automated Software Engineering
    Automated Software Engineering  Volume 17, Issue 2
    June 2010
    96 pages

    Publisher

    Kluwer Academic Publishers

    United States

    Publication History

    Published: 01 June 2010

    Author Tags

    1. Benchmark
    2. Code completion
    3. First-class changes
    4. Integrated development environments
    5. Software evolution

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 14 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Significant Productivity Gains through Programming with Large Language ModelsProceedings of the ACM on Human-Computer Interaction10.1145/36611458:EICS(1-29)Online publication date: 17-Jun-2024
    • (2024)Non-Autoregressive Line-Level Code CompletionACM Transactions on Software Engineering and Methodology10.1145/364959433:5(1-34)Online publication date: 26-Feb-2024
    • (2024)On the Generalizability of Deep Learning-based Code Completion Across Programming Language VersionsProceedings of the 32nd IEEE/ACM International Conference on Program Comprehension10.1145/3643916.3644411(99-111)Online publication date: 15-Apr-2024
    • (2024)SimIMA: a virtual Simulink intelligent modeling assistantSoftware and Systems Modeling (SoSyM)10.1007/s10270-023-01093-623:1(29-56)Online publication date: 1-Feb-2024
    • (2023)Big Code Search: A BibliographyACM Computing Surveys10.1145/360490556:1(1-49)Online publication date: 26-Aug-2023
    • (2023)Pre-implementation Method Name Prediction for Object-oriented ProgrammingACM Transactions on Software Engineering and Methodology10.1145/359720332:6(1-35)Online publication date: 29-Sep-2023
    • (2023)Source Code Recommender Systems: The Practitioners' PerspectiveProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00182(2161-2172)Online publication date: 14-May-2023
    • (2023)On the Robustness of Code Generation Techniques: An Empirical Study on GitHub CopilotProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00181(2149-2160)Online publication date: 14-May-2023
    • (2023)Learning Deep Semantics for Test CompletionProceedings of the 45th International Conference on Software Engineering10.1109/ICSE48619.2023.00178(2111-2123)Online publication date: 14-May-2023
    • (2023)Task Context: A Tool for Predicting Code Context Models for Software Development TasksProceedings of the 45th International Conference on Software Engineering: Companion Proceedings10.1109/ICSE-Companion58688.2023.00045(156-160)Online publication date: 14-May-2023
    • Show More Cited By

    View Options

    View options

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media