TY - GEN
T1 - Rule-directed code clone synchronization
AU - Cheng, Xiao
AU - Zhong, Hao
AU - Chen, Yuting
AU - Hu, Zhenjiang
AU - Zhao, Jianjun
N1 - Publisher Copyright:
© 2016 IEEE.
PY - 2016/7/5
Y1 - 2016/7/5
N2 - Code clones are prevalent in software systems due to many factors in software development. Detecting code clones and managing consistency between them along code evolution can be very useful for reducing clone-related bugs and maintenance costs. Despite some early attempts at detecting code clones and managing the consistency between them, the state-of-the-art tool can only handle simple code clones whose structures are identical or quite similar. However, existing empirical studies show that clones can have quite different structures with their evolution, which can easily go beyond the capability of the state-of-the-art tool. In this paper, we propose CCSync, a novel, rule-directed approach, which paves the structure differences between the code clones and synchronizes them even when code clones become quite different in their structures. The key steps of this approach are, given two code clones, to (1) extract a synchronization rule from the relationship between the clones, and (2) once one code fragment is updated, propagate the modifications to the other following the synchronization rule. We have implemented a tool for CCSync and evaluated its effectiveness on five Java projects. Our results shows that there are many code clones suitable for synchronization, and our tool achieves precisions of up to 92% and recalls of up to 84%. In particular, more than 76% of our generated revisions are identical with manual revisions.
AB - Code clones are prevalent in software systems due to many factors in software development. Detecting code clones and managing consistency between them along code evolution can be very useful for reducing clone-related bugs and maintenance costs. Despite some early attempts at detecting code clones and managing the consistency between them, the state-of-the-art tool can only handle simple code clones whose structures are identical or quite similar. However, existing empirical studies show that clones can have quite different structures with their evolution, which can easily go beyond the capability of the state-of-the-art tool. In this paper, we propose CCSync, a novel, rule-directed approach, which paves the structure differences between the code clones and synchronizes them even when code clones become quite different in their structures. The key steps of this approach are, given two code clones, to (1) extract a synchronization rule from the relationship between the clones, and (2) once one code fragment is updated, propagate the modifications to the other following the synchronization rule. We have implemented a tool for CCSync and evaluated its effectiveness on five Java projects. Our results shows that there are many code clones suitable for synchronization, and our tool achieves precisions of up to 92% and recalls of up to 84%. In particular, more than 76% of our generated revisions are identical with manual revisions.
UR - http://www.scopus.com/inward/record.url?scp=84979771503&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84979771503&partnerID=8YFLogxK
U2 - 10.1109/ICPC.2016.7503722
DO - 10.1109/ICPC.2016.7503722
M3 - Conference contribution
AN - SCOPUS:84979771503
T3 - IEEE International Conference on Program Comprehension
BT - Proceedings of the 24th IEEE International Conference on Program Comprehension, ICPC 2016 - co-located with ICSE 2016
PB - IEEE Computer Society
T2 - 24th IEEE International Conference on Program Comprehension, ICPC 2016
Y2 - 16 May 2016 through 17 May 2016
ER -