Temporal code completion and navigation

Modern IDEs make many software engineering tasks easier by automating functionality such as code completion and navigation. However, this functionality operates on one version of the code at a time. We envision a new approach that makes code completion and navigation aware of code evolution and enables them to operate on multiple versions at a time, without having to manually switch across these versions. We illustrate our approach on several example scenarios. We also describe a prototype Eclipse plugin that embodies our approach for code completion and navigation for Java code. We believe our approach opens a new line of research that adds a novel, temporal dimension for treating code in IDEs in the context of tasks that previously required manual switching across different code versions.

[1]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[2]  Oscar Nierstrasz,et al.  Exploiting Dynamic Information in IDEs Improves Speed and Correctness of Software Maintenance Tasks , 2012, IEEE Transactions on Software Engineering.

[3]  Thomas D. LaToza,et al.  Active code completion , 2011, 2012 34th International Conference on Software Engineering (ICSE).

[4]  Janice Singer,et al.  NavTracks: supporting navigation in software maintenance , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[5]  Sumit Gulwani,et al.  Type-directed completion of partial expressions , 2012, PLDI.

[6]  Romain Robbes,et al.  Improving code completion with program history , 2010, Automated Software Engineering.

[7]  Mira Mezini,et al.  Learning from examples to improve code completion systems , 2009, ESEC/SIGSOFT FSE.

[8]  Alexander Egyed,et al.  Do software engineers benefit from source code navigation with traceability? — An experiment in software change management , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[9]  Yuriy Brun,et al.  Speculative analysis of integrated development environment recommendations , 2012, OOPSLA '12.

[10]  Ralph E. Johnson,et al.  Automated Detection of Refactorings in Evolving Components , 2006, ECOOP.

[11]  Martin P. Robillard,et al.  Using Structure-Based Recommendations to Facilitate Discoverability in APIs , 2011, ECOOP.

[12]  Miryung Kim,et al.  Template-based reconstruction of complex refactorings , 2010, 2010 IEEE International Conference on Software Maintenance.

[13]  Thomas D. LaToza,et al.  Maintaining mental models: a study of developer work habits , 2006, ICSE.