On the Effectiveness of Simhash for Detecting Near-Miss Clones in Large Scale Software Systems
Authors:
- Sharif UddinSUSharif Uddin
- Chanchal K. RoyCRChanchal K. Roy
- Kevin A. SchneiderKSKevin A. Schneider
- Abram HindleAHAbram Hindle
- 1 October 2011
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- No. 10951350,p. 13-22
Abstract
Clone detection techniques essentially cluster textually, syntactically and/or semantically similar code fragments in or across software systems. For large datasets, similarity identification is costly both in terms of time and memory, and especially so when detecting near-miss clones where lines could be modified, added and/or deleted in the copied fragments. The capability and effectiveness of a clone detection tool mostly depends on the code similarity measurement technique it uses. A variety of similarity measurement approaches have been used for clone detection, including fingerprint based approaches, which have had varying degrees of success notwithstanding some limitations. In this paper, we investigate the effectiveness of simhash, a state of the art fingerprint based data similarity measurement technique for detecting both exact and near-miss clones in large scale software systems. Our experimental data show that simhash is indeed effective in identifying various types of clones in a software system despite wide variations in experimental circumstances. The approach is also suitable as a core capability for building other tools, such as tools for: incremental clone detection, code searching, and clone management.Keywords
This publication has 18 references indexed in Scilit:
- Syntax tree fingerprinting for source code similarity detection2009
- A Mutation/Injection-Based Automatic Framework for Evaluating Code Clone Detection Tools2009
- Detecting near-duplicates for web crawling2007
- The TXL source transformation languageScience of Computer Programming, 2006
- CP-Miner: finding copy-paste and related bugs in large-scale software codeIEEE Transactions on Software Engineering, 2006
- CCFinder: a multilinguistic token-based code clone detection system for large scale source codeIEEE Transactions on Software Engineering, 2002
- Similarity estimation techniques from rounding algorithms2002
- Assessing the benefits of incorporating function clone detection in a development process1997
- Experiment on the automatic detection of function clones in a software system using metrics1996
- AnO(ND) difference algorithm and its variationsAlgorithmica, 1986