A study on code clone evolution analysis

It is believed that identical or similar code fragments in source code, also known as code clones, result from copy-paste activity of programming, increase the complexity of software maintenance. Information provided by single code clone cannot effectively represent the features of clone maintenance, so it needs to be extracted from different perspective of clone evolution. Analysis of clone evolution provides strong support to improve the maintainability. In this paper, we present various methods that researchers have used to study clone evolution and summarize the advantages and disadvantages of relevant research on clone evolution. Finally we also summarize and prospect the development trend of clone evolution analysis.

[1]  Martin P. Robillard,et al.  Clonetracker: tool support for code clone management , 2008, ICSE '08.

[2]  Giuliano Antoniol,et al.  Analyzing cloning evolution in the Linux kernel , 2002, Inf. Softw. Technol..

[3]  Jens Krinke,et al.  Is Cloned Code More Stable than Non-cloned Code? , 2008, 2008 Eighth IEEE International Working Conference on Source Code Analysis and Manipulation.

[4]  Chanchal Kumar Roy,et al.  Evaluating the conventional wisdom in clone removal: a genealogy-based empirical study , 2013, SAC '13.

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

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

[7]  Chanchal K. Roy,et al.  Analyzing and Forecasting Near-Miss Clones in Evolving Software: An Empirical Study , 2011, 2011 16th IEEE International Conference on Engineering of Complex Computer Systems.

[8]  Miryung Kim,et al.  An empirical study of code clone genealogies , 2005, ESEC/FSE-13.

[9]  Zhendong Su,et al.  Scalable detection of semantic clones , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[10]  Zhao Wen-yun Automatic Refactoring Method of Cloned Code Using Abstract Syntax Tree and Static Analysis , 2009 .

[11]  Magdalena Balazinska,et al.  Advanced clone-analysis to support object-oriented system refactoring , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[12]  Jens Krinke,et al.  Is cloned code older than non-cloned code? , 2011, IWSC '11.

[13]  Yun Yang,et al.  Towards a clone detection benchmark suite and results archive , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[14]  Lerina Aversano,et al.  An empirical study on the maintenance of source code clones , 2010, Empirical Software Engineering.

[15]  Marko Rosenmüller,et al.  Towards a refactoring guideline using code clone classification , 2008, WRT '08.

[16]  Nicholas A. Kraft,et al.  Clone evolution: a systematic review , 2011, J. Softw. Evol. Process..

[17]  C. Roy,et al.  The Road to Software Clone Management: A Survey , 2012 .

[18]  Jens Krinke,et al.  Identifying similar code with program dependence graphs , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[19]  Chanchal Kumar Roy,et al.  Evaluating Code Clone Genealogies at Release Level: An Empirical Study , 2010, 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation.

[20]  Jun Sun,et al.  Detecting differences across multiple instances of code clones , 2014, ICSE.

[21]  Hotta Keisuke,et al.  Clone Tracking based on Similarity of CRD , 2013 .

[22]  Stéphane Ducasse,et al.  A language independent approach for detecting duplicated code , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[23]  Rainer Koschke,et al.  Incremental Clone Detection , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[24]  Michel Wermelinger,et al.  Tracking clones' imprint , 2010, IWSC '10.

[25]  张丽萍,et al.  A Novel Approach for Predicting the Probability of Inconsistent Changes to Code Clones Based LDA , 2014 .

[26]  Ettore Merlo,et al.  Assessing the benefits of incorporating function clone detection in a development process , 1997, 1997 Proceedings International Conference on Software Maintenance.

[27]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[28]  Martin P. Robillard,et al.  Clone region descriptors: Representing and tracking duplication in source code , 2010, TSEM.

[29]  Michael W. Godfrey,et al.  Recommending Clones for Refactoring Using Design, Context, and History , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[30]  Manishankar Mondal,et al.  Comparative stability of cloned and non-cloned code: an empirical study , 2012, SAC '12.

[31]  Martin P. Robillard,et al.  Tracking Code Clones in Evolving Software , 2007, 29th International Conference on Software Engineering (ICSE'07).

[32]  Manishankar Mondal,et al.  SPCP-Miner: A tool for mining code clones that are important for refactoring or tracking , 2015, 2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[33]  Tibor Bakota,et al.  Tracking the Evolution of Code Clones , 2011, SOFSEM.

[34]  Tibor Gyimóthy,et al.  Clone Smells in Software Evolution , 2007, 2007 IEEE International Conference on Software Maintenance.

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

[36]  Rainer Koschke,et al.  Frequency and risks of changes to clones , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[37]  Shinji Kusumoto,et al.  A metric-based approach to identifying refactoring opportunities for merging code clones in a Java software system , 2008 .

[38]  Bashar Nuseibeh,et al.  Evaluating the Harmfulness of Cloning: A Change Based Experiment , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[39]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..

[40]  Jens Krinke,et al.  A Study of Consistent and Inconsistent Changes to Code Clones , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

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

[42]  Ahmed E. Hassan,et al.  Studying software evolution using topic models , 2014, Sci. Comput. Program..

[43]  Giuliano Antoniol,et al.  Comparison and Evaluation of Clone Detection Tools , 2007, IEEE Transactions on Software Engineering.

[44]  Foutse Khomh,et al.  Late propagation in software clones , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[45]  Harald C. Gall,et al.  Relation of Code Clones and Change Couplings , 2006, FASE.

[46]  Chanchal Kumar Roy,et al.  An automatic framework for extracting and classifying near-miss clone genealogies , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[47]  Mei Hong Software Analysis:A Road Map , 2009 .

[48]  Katsuro Inoue,et al.  Extracting code clones for refactoring using combinations of clone metrics , 2011, IWSC '11.

[49]  Premkumar T. Devanbu,et al.  Clones: What is that smell? , 2010, MSR.

[50]  Lerina Aversano,et al.  How Clones are Maintained: An Empirical Study , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).