ABSTRACT
Manual refactoring edits are error prone, as refactoring requires developers to coordinate related transformations and understand the complex inter-relationship between affected types, methods, and variables. We present RefDistiller, a refactoring-aware code review tool that can help developers detect potential behavioral changes in manual refactoring edits. It first detects the types and locations of refactoring edits by comparing two program versions. Based on the reconstructed refactoring information, it then detects potential anomalies in refactoring edits using two techniques: (1) a template-based checker for detecting missing edits and (2) a refactoring separator for detecting extra edits that may change a program's behavior. By helping developers be aware of deviations from pure refactoring edits, RefDistiller can help developers have high confidence about the correctness of manual refactoring edits. RefDistiller is available as an Eclipse plug-in at https://sites.google.com/site/refdistiller/ and its demonstration video is available at http://youtu.be/0Iseoc5HRpU.
- E. L. Alves, M. Song, M. Kim, P. D. Machado, and T. Massoni. Refdistiller: Detecting anomalies in manual refactoring edits. Technical report, University of Texas at Austin, TR-ECE-2014-3, March, 2014.Google Scholar
- M. Cornélio, A. Cavalcanti, and A. Sampaio. Sound refactorings. Science of Computer Programming, 75(3):106–133, 2010.Google ScholarCross Ref
- B. Fluri, M. Wursch, M. PInzger, and H. C. Gall. Change distilling: Tree differencing for fine-grained source code change extraction. Software Engineering, IEEE Transactions on, 33(11):725–743, 2007. Google ScholarDigital Library
- X. Ge and E. Murphy-Hill. Manual refactoring changes with automated refactoring validation. In Proc. of ICSE’14. IEEE, 2014. Google ScholarDigital Library
- M. Kim, T. Zimmermann, and N. Nagappan. A field study of refactoring challenges and benefits. In Proc. of FSE’12, page 50. ACM, 2012. Google ScholarDigital Library
- T. Mens, N. Van Eetvelde, S. Demeyer, and D. Janssens. Formalizing refactorings with graph transformations. Journal of Software Maintenance and Evolution: Research and Practice, 17(4):247–276, 2005. Google ScholarDigital Library
- S. Negara, N. Chen, M. Vakilian, R. E. Johnson, and D. Dig. A comparative study of manual and automated refactorings. In Proc. of ECOOP’13, pages 552–576. Springer, 2013. Google ScholarDigital Library
- J. L. Overbey, M. J. Fotzler, A. J. Kasza, and R. E. Johnson. A collection of refactoring specifications for fortran 95. In ACM SIGPLAN Fortran Forum, volume 29, pages 11–25. ACM, 2010. Google ScholarDigital Library
- K. Prete, N. Rachatasumrit, N. Sudan, and M. Kim. Template-based reconstruction of complex refactorings. In Proc. of ICSM’10, pages 1–10. IEEE, 2010. Google ScholarDigital Library
- N. Rachatasumrit and M. Kim. An empirical investigation into the impact of refactoring on regression testing. In Proc. of ICSM’12, pages 357–366. IEEE, 2012. Google ScholarDigital Library
- G. Soares, R. Gheyi, D. Serey, and T. Massoni. Making program refactoring safer. Software, IEEE, 27(4):52–57, 2010. Google ScholarDigital Library
- M. Vakilian, N. Chen, S. Negara, B. A. Rajkumar, B. P. Bailey, and R. E. Johnson. Use, disuse, and misuse of automated refactorings. In Proc. of ICSE’12, pages 233–243. IEEE, 2012. Google ScholarDigital Library
- P. Weißgerber and S. Diehl. Are refactorings less error-prone than other changes? In Proc. of MSR’06, pages 112–118. ACM, 2006. Introduction Motivating Scenario and Tool Features Related Work Summary Acknowledgment References Google ScholarDigital Library
Index Terms
- RefDistiller: a refactoring aware code review tool for inspecting manual refactoring edits
Recommendations
Manual refactoring changes with automated refactoring validation
ICSE 2014: Proceedings of the 36th International Conference on Software EngineeringRefactoring, the practice of applying behavior-preserving changes to existing code, can enhance the quality of software systems. Refactoring tools can automatically perform and check the correctness of refactorings. However, even when developers have ...
Tool-Supported Refactoring of Existing Object-Oriented Code into Aspects
Aspect-Oriented Programming (AOP) provides mechanisms for the separation of crosscutting concerns—functionalities scattered through the system and tangled with the base code. Existing systems are a natural testbed for the AOP approach since they often ...
Towards an appropriate software refactoring tool support
ACS'09: Proceedings of the 9th WSEAS international conference on Applied computer scienceRefactoring is a technique that is concerned with changing internal software design while external software behaviour is preserved. Although the refactoring process seems to be clear and well defined, there are difficulties with regard to its ...
Comments