When functions change their names: automatic detection of origin relationships
Authors:
- 1 January 2005
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- No. 10951350,p. 10 pp.-152
Abstract
It is a common understanding that identifying the same entity such as module, file, and function between revisions is important for software evolution related analysis. Most software evolution researchers use entity names, such as file names and function names, as entity identifiers based on the assumption that each entity is uniquely identifiable by its name. Unfortunately names change over time. In this paper, we propose an automated algorithm that identifies entity mapping at the function level across revisions even when an entity's name changes in the new revision. This algorithm is based on computing function similarities. We introduce eight similarity factors to determine if a function is renamed from a function. To find out which similarity factors are dominant, a significance analysis is performed on each factor. To validate our algorithm and for factor significance analysis, ten human judges manually identified renamed entities across revisions for two open source projects: Subversion and Apache2. Using the manually identified result set we trained weights for each similarity factor and measured the accuracy of our algorithm. We computed the accuracies among human judges. We found our algorithm's accuracy is better than the average accuracy among human judges. We also show that trained weights for similarity factors from one period in one project are reusable for other periods and/or other projects. Finally we combined all possible factor combinations and computed the accuracy of each combination. We found that adding more factors does not necessarily improve the accuracy of origin detection.Keywords
This publication has 18 references indexed in Scilit:
- Using origin analysis to detect merging and splitting of source code entitiesIEEE Transactions on Software Engineering, 2005
- Analysis of signature change patterns2005
- Using a clone genealogy extractor for understanding and supporting evolution of code clones2005
- Problems creating task-relevant clone detection reference data2004
- Winnowing2003
- Clone detection using abstract syntax trees2002
- Evaluation experiments on the detection of programming patterns using software metrics2002
- CCFinder: a multilinguistic token-based code clone detection system for large scale source codeIEEE Transactions on Software Engineering, 2002
- Renaming detection2000
- Algorithms for the Longest Common Subsequence ProblemJournal of the ACM, 1977