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!

Made with Slides.com