The pragmatics of clone detection and elimination

Simon Thompson1, Huiqing Li2, and Andreas Schumacher3

The Art, Science, and Engineering of Programming, 2017, Vol. 1, Issue 2, Article 8

Submission date: 2016-12-01
Publication date: 2017-04-01
DOI: https://doi.org/10.22152/programming-journal.org/2017/1/8
Full text: PDF

Abstract

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.

  1. s.j.thompson@kent.ac.uk, University of Kent, United Kingdom

  2. huiqing.li@ee.co.uk, University of Kent, United Kingdom

  3. andreas.schumacher@mac.com, Ericsson AB, Sweden