The pragmatics of clone detection and elimination
This addresses the issue of code maintainability for software engineers, but it is incremental as it builds on existing clone detection methods with real-world case studies.
The paper tackles the problem of code clones making programs difficult to read, modify, and maintain by conducting industrial case studies using a refactoring and clone detection tool, resulting in insights into the complex decisions required for clone elimination in practice and design principles for decision-support tools.
The occurrence of similar code, or `code clones', can make program code difficult to read, modify and maintain. This paper describes industrial case studies of clone detection and elimination using a refactoring and clone detection tool. We discuss how the studies have informed the design of the tool; more importantly, we use the studies to illustrate the complex set of decisions that have to be taken when performing clone elimination in practice. The case studies were performed in collaboration with engineers from Ericsson AB, and used the refactoring tool Wrangler for Erlang. However, the conclusions we draw are largely language-independent, and set out the pragmatics of clone detection and elimination in real-world projects as well as design principles for clone detection decision-support tools.