an empirical study of code clone genealogies
play

An Empirical Study of Code Clone Genealogies - PowerPoint PPT Presentation

An Empirical Study of Code Clone Genealogies MiryungKim,VibhaSazawal,DavidNotkin,andGailMurphy UniversityofWashington UniversityofBritishColumbia ESEC/FSESept2005 Conventional Wisdom


  1. An Empirical Study of Code Clone Genealogies Miryung�Kim,�Vibha�Sazawal,�David�Notkin,�and�Gail�Murphy University�of�Washington University�of�British�Columbia ESEC/FSE�Sept�2005

  2. Conventional Wisdom ������������������������������� ���������� ��������������������� ������������������������ ������������������������ ��������������������� ������� ������� ��������������������� ������������������������������ ������ ������������������������������&������������� �������������� ����������������������� ����������������'������������ ���������� �!�������������������������������� �!�������������������������������� ������ ������ " " ���������������������� ���������������������� �!��#������#��$��������� �!��#������#��$��������� %� %� " " % %

  3. Our Previous Study of Copy and Paste Programming Practices at IBM [Kim et al. ISESE2004] • Even�skilled�programmers�often� ����������� ������ code�clones�with�clear�intent.� – Programmers�cannot�refactor�clones�because�of� ��������������������������������� – Programmers� ���� and� ��������������� until�they� realize�how�to�abstract�the�common�part�of�clones.� – Programmers�often� ��������������������� to�clones.

  4. Research Questions How�do�clones�evolve�over�time? • consistently�changed? • long1lived�(or�short1lived)? • easily�refactorable?

  5. Previous Studies of Code Clones • automatic�clone�detection – ��������������������������������������������� • studies�of�clone�coverage�ratio – ��� ��� !���"�#��$%!���&������$$� !������� • studies�of�clone�coverage�change� – ���������'���������(���������&�����)��������*+$,��)&�*+-, ������������������������.�����.�����(��������������������� .�����������������������������

  6. Outline � motivation q clone�genealogy�:�model�and�tool� q study�procedure�and�results

  7. Model of Clone Evolution ��������������������� ������������ �������������������� A A A A B B B B C C ������������ D D D ����������� ����������� ��������� ����������� ����������� ��� ����������������� ������������������ !���������"�������

  8. �������������������������������������������������� �������������������������������������������������� ����������������������������������� ����������������������������������� consistently changed � � / / � lineage � 0 0 / / � � � 2 2 2 lineage copied, 1 1 1 pasted, � and modified

  9. Clone Genealogy Extractor (CGE) Given�multiple�versions�of�a�program,�V k for�1≤k≤n. • find�clone�groups�in�each�version�using�CCFinder.� • find�cloning�relationships�among�clone�groups�of�V i and�V i+1� using�CCFinder.� • map�clones�of�V i and�V i+1� using�diff�based�algorithm. • separate�each�connected�component�of�cloning� relationships�(a�clone�genealogy). • identify�clone�evolution�patterns�in�each�genealogy.

  10. Outline � motivation � clone�genealogy�:�model�and�tool� q study�procedure�and�results

  11. Two Java Subject Programs ������� ����� ������� &30 7878�~�23731� 5756�~�21188 �������� 2�years�2�months 5�years�8�months (������� 37 224 versions: a set of check-in snapshots that increased or decreased the total lines of code clones

  12. Running CGE on Java Programs • CCFinder�setting – minimum�token�length�=�30� – longest�sequence�matching • CGE�setting – text�similarity�threshold�=�0.3 • false�positives – repetitive�field�declaration – repetitive�static�method�invocation – a�series�of�case�switch�statements – etc.

  13. Consistently Changing Clones 4�������5�6�.��'�������������������������� �������������������7� ������8�����5 • A�genealogy�has�a� #�����������������$ pattern� iff all�lineages�include�at�least�one�consistent� change�pattern. • We�counted�genealogies�with�a� #����������� ������$ pattern.

  14. Consistently Changing Clones 9������5 • 38%�and�36%�of�genealogies�include�a� ����������� ������ pattern.� ������������������������������������������������� ����������������������������������������������������

  15. Volatile Clones 4�������5�6�.�������������������(�(��������� �������:�'��������������������������.���� ��������������7� ������8�����5 • A�genealogy�is� #����$ if�it�does�not�include� clones�of�the�final�version.� • We�measured�the�age�(lifespan�or�length)�of� dead�genealogies.�

  16. Volatile Clones 9������5 disappeared�within ����� ���%��� 2�versions 52% 35% 5�versions 75% 36% 10�versions 79% 48% • 26%�and�34%�of�clone�lineages�were�discontinued�because�of� divergent�changes�in�the�clone�group.

  17. How do lineages disappear? reasons ����� ���%��� divergent�changes 26% 34% refactoring�or� 67% 45% removal cut�off�by�the� 7% 21% threshold ������������������������������������������� ���������������������������������� ���������������������������������

  18. Locally Unfactorable Clones 4�������5�6�.�������������������''��������� ��'�����7 ������8�����5 • A�clone�group�is�locally�unfactorable�if – programmers�cannot�use�standard�refactoring�techniques,�or – programmer�must�deal�with�cascading�non1local�changes,�or – programmers�cannot�remove�duplication�due�to�programming� language�limitations.� • We�manually�inspected�all�genealogies�and� counted�locally�unfactorable�genealogies.�

Recommend


More recommend