Det har allmänt antagits att kodkloner är i sig dåliga och att eliminera kloner genom refactoring skulle lösa problemen med kodkloner. För att undersöka giltigheten av detta antagande utvecklade vi en formell definition av klonutveckling och byggde en klongenealogi verktyg som automatiskt extraherar historien om kodkloner från en källkodsarkiv. Med hjälp av vårt verktyg tog vi fram genealogisk kloninformation för två Java-projekt med öppen källkod och analyserade deras utveckling. Vår studie motsäger en del konventionell visdom om kloner. I synnerhet, refaktoring kanske inte alltid förbättra programvara med avseende på kloner av två skäl. Först, många kod kloner finns i systemet för bara en kort tid; omfattande refaktoring av sådana kortlivade kloner kan inte vara värt om de sannolikt avviker från varandra mycket snart. För det andra, många kloner, särskilt långlivade kloner som har förändrats konsekvent med andra element i samma grupp, är inte lätt refaktorable på grund av programspråk begränsningar. Dessa insikter visar att refaktoring inte kommer att hjälpa i att hantera vissa typer av kloner och öppna upp möjligheter för kompletterande klon underhållsverktyg som riktar sig till dessa andra klasser av kloner.
Kim och Al. REF studerade genealogin hos kodkloner i två Java open-source-projekt.
An empirical study of code clone genealogies
{'venue': 'ESEC/FSE-13', 'journal': None, 'mag_field_of_study': ['Computer Science']}