CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
Identifying Reasons for Software Changes Using Historic Databases
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Studying The Evolution of Software Systems Using Evolutionary Code Extractors
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
An empirical study of code clone genealogies
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
How Clones are Maintained: An Empirical Study
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Comparison and Evaluation of Clone Detection Tools
IEEE Transactions on Software Engineering
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
Handbook of Parametric and Nonparametric Statistical Procedures
Handbook of Parametric and Nonparametric Statistical Procedures
Predicting faults using the complexity of code changes
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
MapReduce as a general framework to support research in Mining Software Repositories (MSR)
MSR '09 Proceedings of the 2009 6th IEEE International Working Conference on Mining Software Repositories
An empirical study on the maintenance of source code clones
Empirical Software Engineering
Studying the Impact of Clones on Software Defects
WCRE '10 Proceedings of the 2010 17th Working Conference on Reverse Engineering
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Analyzing and Forecasting Near-Miss Clones in Evolving Software: An Empirical Study
ICECCS '11 Proceedings of the 2011 16th IEEE International Conference on Engineering of Complex Computer Systems
Late propagation in software clones
ICSM '11 Proceedings of the 2011 27th IEEE International Conference on Software Maintenance
An empirical study of the factors affecting co-change frequency of cloned code
CASCON '13 Proceedings of the 2013 Conference of the Center for Advanced Studies on Collaborative Research
Hi-index | 0.00 |
When implementing new features into a software system, developers may duplicate several lines of code to reuse some existing code segments. This action creates code clones in the software system. The literature has documented different types of code clone (e.g., Type-1, Type-2, and Type-3). Once created, code clones evolve as they are modified during both the development and maintenance phases of the software system. The evolution of code clones across the revisions of a software system is known as a clone genealogy. Existing work has investigated the fault-proneness of Type-1 and Type-2 clone genealogies. In this study, we investigate clone genealogies containing Type-3 clones. We analyze three long lived software systems APACHE-ANT, ARGOUML, and JBOSS, which are all written in JAVA. Using the NICAD clone detection tool, we build clone genealogies and examine two evolutionary phenomena on clones: the mutation of the type of a clone during the evolution of a system, and the migration of clone segments across the repositories of a software system. Results show that 1) mutation and migration occur frequently in software systems; 2) the mutation of a clone group to Type-2 or Type-3 clones increases the risk for faults; 3) increasing the distance between code segments in a clone group also increases the risk for faults. Index Terms: Types of clones; clone genealogy; clone migration; fault-proneness.