  Background: Code cloning - copying and reusing pieces of source code - is a
common phenomenon in software development in practice. There have been several
empirical studies on the effects of cloning, but there are contradictory
results regarding the connection of cloning and faults. Objective: Our aim is
to clarify the relationship between code clones and faults. In particular, we
focus on inconsistent (or type-3) clones in this work. Method: We conducted a
case study with TWT GmbH where we detected the code clones in three Java
systems, set them into relation to information from issue tracking and version
control and interviewed three key developers. Results: Of the type-3 clones, 17
% contain faults. Developers modified most of the type-3 clones simultaneously
and thereby fixed half of the faults in type-3 clones consistently. Type-2
clones with faults all evolved to fixed type-3 clones. Clone length is only
weakly correlated with faultiness. Conclusion: There are indications that the
developers in two cases have been aware of clones. It might be a reason for the
weak relationship between type-3 clones and faults. Hence, it seems important
to keep developers aware of clones, potentially with new tool support. Future
studies need to investigate if the rate of faults in type-3 clones justifies
using them as cues in defect detection.
