Software code clones refer to the same part of code that appears in different places. Software clones (with or without edits) may occur during the software development for the same requirements. This copy and paste may be done on different levels (file, class, and method). Despite this process reduces the time and effort required to build the software but on the other hand, it may increase the cost and effort required to maintain the software. Also, may lead to bugs propagation when the bug occurs in the original copy of code. For this reason, many tools for code clone detection are implemented in the last 20 years to detect different kinds of clones (kind1, kind 2, kind 3, and kind 4) using different methods for different programming languages (Java, C, C++…etc).
This paper explains: what are software clones, their kinds, and the methods used to detect them. It contains also a list of researches in this field till Jan 2022