Metadata-based code example embedding

In practice, developers usually seek different ways to save time and effort. Thus, they use different tools (such as search engines, issue tracking, or Q&A sites) to collaborate and find code examples that meet their specific needs. However, such tools only support the traditional find-alter-embed approach of code examples while ignoring the origin and location of these sources. Such information can be very useful to assist software development tasks such as bug-fixing, teamwork, and knowledge transfer, through direct notification of critical changes made to the code example, or access to the original source including its discussions, issues, and bug reports. In this paper, we propose a new approach that consists of collecting meta information about a code example to automatically track critical changes to it and its origin and provide feedback to both developers and the online community. We report on our vision, approach and challenges, and draft a software architecture to implement our research idea.

[1]  Niko Schwarz Hot clones: Combining search-driven development, clone management, and code provenance , 2012, 2012 34th International Conference on Software Engineering (ICSE).

[2]  Christian Prause Maintaining Fine-Grained Code Metadata Regardless of Moving, Copying and Merging , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[3]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

[4]  Hoan Anh Nguyen,et al.  Clone Management for Evolving Software , 2012, IEEE Transactions on Software Engineering.

[5]  Romain Robbes Mining a Change-Based Software Repository , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[6]  Diomidis Spinellis,et al.  Code Reading: The Open Source Perspective , 2003 .

[7]  Uwe M. Borghoff,et al.  XCC: change control of XML documents , 2010, Computer Science - Research and Development.

[8]  Rob Miller,et al.  Real-time collaborative coding in a web IDE , 2011, UIST.

[9]  Sandro Schulze,et al.  Analysis and removal of code clones in software product lines , 2013 .

[10]  Amiram Yehudai,et al.  Example Overflow: Using social media for code recommendation , 2012, 2012 Third International Workshop on Recommendation Systems for Software Engineering (RSSE).

[11]  Romain Robbes,et al.  Versioning systems for evolution research , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[12]  Premkumar T. Devanbu,et al.  Clones: what is that smell? , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[13]  Niko Schwarz Hot Clones: A Shotgun Marriage of Search-Driven Development and Clone Management , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[14]  Amiram Yehudai,et al.  Characterizing Example Embedding as a software activity , 2009, 2009 ICSE Workshop on Search-Driven Development-Users, Infrastructure, Tools and Evaluation.

[15]  James R. Cordy,et al.  Practical language-independent detection of near-miss clones , 2004, CASCON.

[16]  Sumit Gulwani,et al.  Building Bing Developer Assistant , 2015 .

[17]  Sushil Krishna Bajracharya,et al.  Sourcerer: a search engine for open source code supporting structure-based search , 2006, OOPSLA '06.

[18]  Andreas Zeller,et al.  Mining Version Histories to Guide Software Changes , 2004 .

[19]  Sebastian Spaeth,et al.  Code Reuse in Open Source Software , 2008, Manag. Sci..

[20]  Lu Fang,et al.  APIExample: An effective web search based usage example recommendation system for java APIs , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[21]  Ralph E. Johnson,et al.  Refactoring-Aware Configuration Management for Object-Oriented Programs , 2007, 29th International Conference on Software Engineering (ICSE'07).

[22]  Katsuhisa Maruyama,et al.  A Software Development Environment Maintaining Fine-Grained Code Metadata by using Editing Operations , 2011 .

[23]  Gonzalo Navarro,et al.  A guided tour to approximate string matching , 2001, CSUR.

[24]  Stefan Wagner,et al.  Continuous and Focused Developer Feedback on Software Quality (CoFoDeF) , 2015 .

[25]  Stephan Diehl,et al.  Identifying Refactorings from Source-Code Changes , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[26]  Daqing Hou,et al.  CReN: a tool for tracking copy-and-paste code clones and renaming identifiers consistently in the IDE , 2007, eclipse '07.

[27]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[28]  Steven P. Reiss,et al.  Semantics-based code search , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[29]  Kurt Schneider,et al.  Automatically recommending test code examples to inexperienced developers , 2015, ESEC/SIGSOFT FSE.

[30]  Sunghun Kim,et al.  Crowd debugging , 2015, ESEC/SIGSOFT FSE.

[31]  Scott R. Klemmer,et al.  Example-centric programming: integrating web search into the development environment , 2010, CHI.