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
Evaluating the Harmfulness of Cloning: A Change Based Experiment
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
A Study of Consistent and Inconsistent Changes to Code Clones
WCRE '07 Proceedings of the 14th Working Conference on Reverse Engineering
Scenario-Based Comparison of Clone Detection Techniques
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
An Empirical Study of Function Clones in Open Source Software
WCRE '08 Proceedings of the 2008 15th Working Conference on Reverse Engineering
"Cloning considered harmful" considered harmful: patterns of cloning in software
Empirical Software Engineering
Comparison and evaluation of code clone detection techniques and tools: A qualitative approach
Science of Computer Programming
A Mutation/Injection-Based Automatic Framework for Evaluating Code Clone Detection Tools
ICSTW '09 Proceedings of the IEEE International Conference on Software Testing, Verification, and Validation Workshops
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
An empirical study on the maintenance of source code clones
Empirical Software Engineering
Near-miss function clones in open source software: an empirical study
Journal of Software Maintenance and Evolution: Research and Practice - Working Conference on Reverse Engineering (WCRE 2008)
Proceedings of the 4th International Workshop on Software Clones
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
Evaluating Code Clone Genealogies at Release Level: An Empirical Study
SCAM '10 Proceedings of the 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Is cloned code older than non-cloned code?
Proceedings of the 5th International Workshop on Software Clones
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
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
An automatic framework for extracting and classifying near-miss clone genealogies
ICSM '11 Proceedings of the 2011 27th IEEE International Conference on Software Maintenance
Comparative stability of cloned and non-cloned code: an empirical study
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Genealogical insights into the facts and fictions of clone removal
ACM SIGAPP Applied Computing Review
Hi-index | 0.00 |
Code cloning is a controversial software engineering practice due to contradictory claims regarding its effect on software maintenance. Code stability is a recently introduced measurement technique that has been used to determine the impact of code cloning by quantifying the changeability of a code region. Although most existing stability analysis studies agree that cloned code is more stable than non-cloned code, the studies have two major flaws: (i) each study only considered a single stability measurement (e.g., lines of code changed, frequency of change, age of change); and, (ii) only a small number of subject systems were analyzed and these were of limited variety. In this paper, we present a comprehensive empirical study on code stability using four different stability measuring methods. We use a recently introduced hybrid clone detection tool, NiCAD, to detect the clones and analyze their stability in different dimensions: by clone type, by measuring method, by programming language, and by system size and age. Our in-depth investigation on 12 diverse subject systems written in three programming languages considering three types of clones reveals that: (i) cloned code is generally less stable than non-cloned code, and more specifically both Type-1 and Type-2 clones show higher instability than Type-3 clones; (ii) clones in both Java and C systems exhibit higher instability compared to the clones in C# systems; (iii) a system's development strategy might play a key role in defining its comparative code stability scenario; and, (iv) cloned and non-cloned regions of a subject system do not follow any consistent change pattern.