An empirical study of operating systems errors
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
An empirical study of code clone genealogies
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Classifying Change Types for Qualifying Change Couplings
ICPC '06 Proceedings of the 14th IEEE International Conference on Program Comprehension
Program element matching for multi-version program analyses
Proceedings of the 2006 international workshop on Mining software repositories
"Cloning Considered Harmful" Considered Harmful
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Understanding collateral evolution in Linux device drivers
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Tracking Code Clones in Evolving Software
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
How Clones are Maintained: An Empirical Study
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Proceedings of the 30th international conference on Software engineering
Diff/TS: A Tool for Fine-Grained Structural Change Analysis
WCRE '08 Proceedings of the 2008 15th Working Conference on Reverse Engineering
Comparison and evaluation of code clone detection techniques and tools: A qualitative approach
Science of Computer Programming
Extraction of product evolution tree from source code of product variants
Proceedings of the 17th International Software Product Line Conference
Hi-index | 0.01 |
A software project often contains a large amount of “homologous code”, i.e., similar code fragments distributed in different versions or “species” sharing common ancestry. Code homology typically arises when the code is inherited, duplicated, and patched. In this paper, we propose an automated method for detecting and tracking homologous code in genealogy of evolving software using fine-grained tree differencing on source code. Such a tool would help software developers/maintainers to better understand the source code and to detect/prevent inconsistent modifications that may lead to latent errors. The results of experiments on several large-scale software projects are reported to show the capability of the method, including BIND9 DNS servers, a couple of Java software systems jEdit and Ant, and the entire Linux device driver subsystem.