Identifying overly strong conditions in refactoring implementations

  • Authors:
  • Gustavo Soares;Melina Mongiovi;Rohit Gheyi

  • Affiliations:
  • Department of Computing Systems, Federal University of Campina Grande, Brazil;Department of Computing Systems, Federal University of Campina Grande, Brazil;Department of Computing Systems, Federal University of Campina Grande, Brazil

  • Venue:
  • ICSM '11 Proceedings of the 2011 27th IEEE International Conference on Software Maintenance
  • Year:
  • 2011

Quantified Score

Hi-index 0.01

Visualization

Abstract

Each refactoring implementation must check a number of conditions to guarantee behavior preservation. However, specifying and checking them are difficult. Sometimes refactoring tool developers may define overly strong conditions that prevent useful behavior-preserving transformations to be performed. We propose an approach for identifying overly strong conditions in refactoring implementations. We automatically generate a number of programs as test inputs for refactoring implementations. Then, we apply the same refactoring to each test input using two different implementations, and compare both results. We use Safe Refactor to evaluate whether a transformation preserves behavior. We evaluated our approach in 10 kinds of refactorings for Java implemented by three tools: Eclipse and Netbeans, and the JastAdd Refactoring Tool (JRRT). In a sample of 42,774 transformations, we identified 17 and 7 kinds of overly strong conditions in Eclipse and JRRT, respectively.