Extracting Clone Genealogy From Software Repositories
Amir Saboury
Separate fragments of code that are very similar.
https://msdn.microsoft.com/
Clones make it hard to change your application because you have to find and update more than one fragment.
Clone Detection
Clone Tracking
Clone Genealogy
NiCAD
CCFinder
...
g1
F1
5~10
F2
26~31
F3
15~20
g2
F1
15~25
F1
81~91
F4
1~21
F3
50~60
g3
F1
10~20
F5
80~90
Commit 1a4b4eaf...
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░
The state of each clone segment will be defined by its previous state + current changes + next snapshot clone groups
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░
A clone can be
+ untouched
+ shrank
+ expanded
+ shifted
Splitting clones to clone pairs
Splitting clones to clone pairs
Three different software projects
Two different Clone Detection tools
A clone pair that experiences further diverging and inconsistent changes, can contain more faults than a clone pair that remains in a consistent state.
Fault-proneness of a change from a consistent state is not dependent on the previous state.