Clone Tracking
Extracting Clone Genealogy From Software Repositories
Amir Saboury
Code Clones
Separate fragments of code that are very similar.
https://msdn.microsoft.com/
Code Clones
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
Clone Detection
NiCAD
CCFinder
...
Clone Groups
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...
Clone Tracking
Clone Tracking Info
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░
The state of each clone segment will be defined by its previous state + current changes + next snapshot clone groups
Clone Tracking Info
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░
░░░░░░░░░
A clone can be
+ untouched
+ shrank
+ expanded
+ shifted
Genealogy
Splitting clones to clone pairs
Genealogy
Splitting clones to clone pairs
Types of change
Case Study
Three different software projects
- Ant
- ArgoUML
- JEdit
Two different Clone Detection tools
- NiCAD
- CCFinder
Analysis
A clone pair that experiences further diverging and inconsistent changes, can contain more faults than a clone pair that remains in a consistent state.
Analysis
Fault-proneness of a change from a consistent state is not dependent on the previous state.
Thank you!
deck
By amir
deck
- 1,103