ABSTRACT
Knowing which parts of a system underwent which types of refactoring between two program versions can help programmers better understand code changes. Though there are a number of techniques that automatically find refactorings from two input program versions, these techniques are inadequate in terms of coverage by handling only a subset of refactoring types---mostly simple rename and move refactorings at the level of classes, methods, and fields. This paper presents a Ref-Finder Eclipse plug-in that automatically identifies both atomic and composite refactorings using a template-based refactoring reconstruction approach---it expresses each refactoring type in terms of template logic queries and uses a logic programming engine to infer concrete refactoring instances. Ref-Finder currently supports sixty three types in the Fowler's catalog, showing the most comprehensive coverage among existing techniques.
- D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In ECOOP, pages 404--428, 2006. Google ScholarDigital Library
- D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-aware configuration management for object-oriented programs. In ICSE '07, pages 427--436, 2007. Google ScholarDigital Library
- M. Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, 1999. Google ScholarDigital Library
- M. Kim and D. Notkin. Discovering and representing systematic code changes. In ICSE '09, pages 309--319, Washington, DC, USA, 2009. IEEE Computer Society. Google ScholarDigital Library
- A. Loh and M. Kim. A program differencing tool to identify systematic structural differences. In ICSE '10 Research Demo, page 4, 2010. Google ScholarDigital Library
- K. Mens, T. Mens, and M. Wermelinger. Maintaining software through intentional source-code views. In SEKE '02, pages 289--296. ACM, 2002. Google ScholarDigital Library
- K. Prete, N. Rachatasumrit, N. Sudan, and M. Kim. Template-based reconstruction of complex refactorings (to appear). In proceedings of the 26th IEEE International Conference on Software Maintenance, September 2010. Google ScholarDigital Library
- K. D. Volder. Type Oriented Logic Meta Programming. PhD thesis, The University of British Columbia, 1998.Google Scholar
- Z. Xing and E. Stroulia. Refactoring detection based on umldiff change-facts queries. In WCRE '06, pages 263--274, Washington, DC, USA, 2006. IEEE. Google ScholarDigital Library
- L. Zou and M. Godfrey. Using origin analysis to detect merging and splitting of source code entities. IEEE Trans. Softw. Eng., 31(2):166--181, 2005. Google ScholarDigital Library
Index Terms
- Ref-Finder: a refactoring reconstruction tool based on logic query templates
Recommendations
Why we refactor? confessions of GitHub contributors
FSE 2016: Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software EngineeringRefactoring is a widespread practice that helps developers to improve the maintainability and readability of their code. However, there is a limited number of studies empirically investigating the actual motivations behind specific refactoring ...
Towards a catalog of composite refactorings
AbstractCatalogs of refactoring have key importance in software maintenance and evolution, since developers rely on such documents to understand and perform refactoring operations. Furthermore, these catalogs constitute a reference guide for ...
Catalogs of refactoring have key importance in software development, since developers rely on such documents to perform refactoring operations, and they also act as a reference guide for communication among practitioners. In this paper, we propose and ...
Preserving the separation of concerns while composing aspects on shared joinpoints
OOPSLA '09: Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applicationsAspect-oriented programming (AOP) is a programming paradigm which makes possible the separation of crosscutting concerns in different modules (the aspects). AOP is known to have issues when aspects are composed in a base program. Several approaches have ...
Comments