Publication Type

Conference Proceeding Article

Version

publishedVersion

Publication Date

9-2016

Abstract

To attract more users on different platforms, many projects release their versions in multiple programming languages (e.g., Java and C#). They typically have many code snippets that implement similar functionalities, i.e., cross-language clones. Programmers often need to track and modify cross-language clones consistently to maintain similar functionalities across different language implementations. In literature, researchers have proposed approaches to detect cross-language clones, mostly for languages that share a common intermediate language (such as the .NET language family) so that techniques for detecting single-language clones can be applied. As a result, those approaches cannot detect cross-language clones for many projects that are not implemented in a .NET language. To overcome the limitation, in this paper, we propose a novel approach, CLCMiner, that detects cross-language clones automatically without the need of an intermediate language. Our approach mines such clones from revision histories, which reflect how programmers maintain cross-language clones in practice. We have implemented a prototype tool for our approach and conducted an evaluation on five open source projects that have versions in Java and C#. The results show that CLCMiner achieves high accuracy and point to promising future work.

Keywords

Software revision history, Cross-language clone, Diff, Java, C# languages

Discipline

Programming Languages and Compilers | Software Engineering

Research Areas

Software and Cyber-Physical Systems

Publication

ASE 2016: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering: Singapore, 2016 September 3-7

First Page

696

Last Page

701

ISBN

9781450338455

Identifier

10.1145/2970276.2970363

Publisher

ACM

City or Country

New York

Additional URL

http://doi.org./10.1145/2970276.2970363

Share

COinS