Abstract
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.
Similar content being viewed by others
References
Binkley, D., Horwitz, S., and Reps, T. 1995. Program integration for languages with procedure calls. ACM Transactions on Software Engineering and Methology, 4(1):3–35.
Friedman-Hill, E.J. 1999. Jess, The Java Expert System Shell.
Gusfield, D. 1997. Algorithms on Strings, Trees and Sequences: Computer Science and Computational Biology. Cambridge University Press.
Horwitz, S., Prins, J., and Reps, T. 1989. Integrating noninterfering versions of programs. ACM Transactions on Programming Languages and Systems, 11(3):345–387.
Horwitz, S., Reps, T., and Yang, W. 1992. A program integration algorithm that accomodates semantics-preserving transformations. ACM Transactions on Software Engineering and Methology, 1(3):310–354.
Hunt, J.J. 2000. An Adaptive Heuristic for Tree Comparision. Technical Report 2000–9, Fakult ät für Informatik, Universität Karlsruhe.
Hunt, J.W. and McIllroy, M.D. 1976. An algorith for differential file comparison. Computer Science Technical Report 41, Bell Laboratories.
Joseph, D., Meidanis, J., and Tiwari, P. 1992. Determining DNA sequences similarity using maximum independant set algorithms for interval graphs. In O. Nurmi and E. Ukkonen, editors, Proceedings of the 3rd Scandinavian Workshop on Algorithm Theory. Helsinki, Finland, pp. 326–337.
Lippe, E. and van Oosterom, N. 1992. Operation-based Merging. In H. Weber, editor, Proceedings 5th ACM SIGSOFT Symposium on Software Development Environments, pp. 78–87.
McCreight, E.M. 1976. A space economical suffix tree construction algorithm. Journal of the ACM, 32:262–272.
Ousterhout, J.K. 1983. Corner Stitching: A Data Structuring Technique for VLSI Layout Tools. Technical Report CSD–83–114, University of California, Berkeley.
Ousterhout, J.K., Hamachi, G.T., Mayo, R.N., Scott, W.S., and Taylor, G.S. 1984. Magic: A VLSI layout system. In Proc. of the 21th Design Automation Conf., pp. 152–159.
Parr, T. 1999. ANTLR Reference Manual, http://www.ANTLR.org/doc/index.html.
Parr, T. and Quong, R. 1995. A predicated-LL(k) parser generator. Software Practice and Experience, 25(7):789–810.
Perry, D.E., Siy, H.P., and Votta, L.G. 2001. Parallel changes in large-scale software development. An Observational Case Study, 10(3):308–337.
Tichy, W.F. 1984. The string-to-string correction problem with block moves. 2(4):309–321.
Tichy, W.F. 1985. RCS-a system for version control. Software-Practice and Experience, 15(7):637–654.
Westfechtel, B. 1991. Structure-oriented merging of revisions of software documents. In S. Feiler, editor, Proceedings 3rd International Workshop on Software configuration Management, New York, pp. 68–80.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Malpohl, G., Hunt, J.J. & Tichy, W.F. Renaming Detection. Automated Software Engineering 10, 183–202 (2003). https://doi.org/10.1023/A:1022968013020
Issue Date:
DOI: https://doi.org/10.1023/A:1022968013020