Micro-clones are tiny duplicated pieces of code; they typically comprise only few statements or lines. In this paper, we study the “Last Line Effect,” the phenomenon that the last line or statement in a micro-clone is much more likely to contain an error than the previous lines or statements. We do this by analyzing 219 open source projects and reporting on 263 faulty micro-clones and interviewing six authors of real-world faulty micro-clones. In an interdisciplinary collaboration, we examine the underlying psychological mechanisms for the presence of these relatively trivial errors. Based on the interviews and further technical analyses, we suggest that so-called “action slips” play a pivotal role for the existence of the last line effect: Developers’ attention shifts away at the end of a micro-clone creation task due to noise and the routine nature of the task. Moreover, all micro-clones whose origin we could determine were introduced in unusually large commits. Practitioners benefit from this knowledge twofold: 1) They can spot situations in which they are likely to introduce a faulty micro-clone and 2) they can use PVS-Studio, our automated micro-clone detector, to help find erroneous micro-clones.

Additional Metadata
Keywords Clone detection, Code clones, Interdisciplinary work, Last line effect, Micro-clones, Psychology
Persistent URL dx.doi.org/10.1007/s10664-016-9489-6, hdl.handle.net/1765/95222
Journal Empirical Software Engineering
Citation
Beller, M. (Moritz), Zaidman, A. (Andy), Karpov, A. (Andrey), & Zwaan, R.A. (2017). The last line effect explained. Empirical Software Engineering, 1–29. doi:10.1007/s10664-016-9489-6