Renaming Detection

Finding changed identifiers is important for understanding the difference between two versions of a program and for detecting and resolving conflicts while merging variants of a program together. Standard practice for differencing and merging relies on line based techniques that do not recognize renamed identifiers. The design and implementation of a tool to automatically detect renamed identifiers between two versions of a program is presented. The system uses an abstract representation of language constructs to enable language awareness without introducing language dependence. Modules for Java and Scheme have been written. The detector works with multiple file pairs, taking into account renamings that span several files. A case study is presented that demonstrates proof of concept. The detector is part of a suite of intelligent differencing and merging programs that exploit the static semantics of programming languages.

[1]  E PerryDewayne,et al.  Parallel changes in large-scale software development , 2001 .

[2]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[3]  Michael J. Fischer,et al.  The String-to-String Correction Problem , 1974, JACM.

[4]  Dileep A. Divekar Corner Stitching: A Data-Structuring Technique for VLSI Layout Tools , 1984 .

[5]  Walter S. Scott,et al.  Magic: A VLSI Layout System , 1984, 21st Design Automation Conference Proceedings.

[6]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[7]  Wuu Yang,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1992, SDE 4.

[8]  David W. Binkley,et al.  Program integration for languages with procedure calls , 1995, TSEM.

[9]  E. J. Friedman-hill,et al.  Jess, the Java expert system shell , 1997 .

[10]  Z E. Jess Friedman-hill,et al.  The Java Expert System Shell , 2000 .

[11]  Edward M. McCreight,et al.  A Space-Economical Suffix Tree Construction Algorithm , 1976, JACM.

[12]  Ernst Lippe,et al.  Operation-based merging , 1992 .

[13]  Walter F. Tichy,et al.  The string-to-string correction problem with block moves , 1984, TOCS.

[14]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[15]  João Meidanis,et al.  Determining DNA Sequence Similarity Using Maximum Independent Set Algorithms for Interval Graphs , 1992, SWAT.

[16]  Bernhard Westfechtel,et al.  Structure-oriented merging of revisions of software documents , 1991, SCM '91.

[17]  RepsThomas,et al.  A program integration algorithm that accommodates semantics-preserving transformations , 1992 .

[18]  Dan Gusfield,et al.  Algorithms on Strings, Trees, and Sequences - Computer Science and Computational Biology , 1997 .

[19]  Walter F. Tichy,et al.  Delta algorithms: an empirical analysis , 1998, TSEM.