Review of Automated Code Refactoring of C# Programs
Anna Derezinska, Dawid Sygocki
DOI: http://dx.doi.org/10.15439/2023F7277
Citation: Proceedings of the 18th Conference on Computer Science and Intelligence Systems, M. Ganzha, L. Maciaszek, M. Paprzycki, D. Ślęzak (eds). ACSIS, Vol. 35, pages 937–941 (2023)
Abstract. Code refactoring is supported by many Integrated Development Environments. This paper is focused on the automated code refactoring of C\# programs. We have analyzed more than sixty refactorings available in three popular IDEs. We cataloged different restrictions, defects, and other quality concerns associated with the implementation of the refactorings, taking into account both modification of the production code and of the corresponding test cases. An extension to automate selected refactoring improvements has been developed for the ReSharper platform and experimentally verified.
References
- M. Fowler, Refactoring: improving the design of existing code. 2nd ed. Addison-Wesley, 2018.
- A. A. B. Baqais and M. Alshayeb, “Automatic software refactoring: a systematic literature review,” Software Quality Journal, vol. 28, 2020, pp. 459-502, http://dx.doi.org/10.1007/s11219-019-09477-y
- “ReSharper: The Visual Studio extension for .NET developers by JetBrains,” 2023, https://www.jetbrains.com/resharper/, [Online, Accessed 20 Jan 2023]
- A. M. Eilertsen and G. C. Murphy, “The usability (or not) of refactoring tools,” in Proc. IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER), 2021, pp. 237-248. http://dx.doi.org/10.1109/SANER50967.2021.00030
- M. Gligoric, F. Behrang, Y. Li, J. Overbey, M. Hafiz, and D. Marinov, “Systematic Testing of Refactoring Engines on Real Software Projects,” in Proc. ECOOP 2013 – Object-Oriented Programming, LNCS vol 7920. Springer, Berlin, Heidelberg. 2013, pp. 629–654, https://doi.org/10.1007/978-3-642-39038-8_26
- M. Schäfer, A. Thies, F. Steimann, and F. Tip, "A Comprehensive Approach to Naming and Accessibility in Refactoring Java Programs," IEEE Transactions on Software Engineering, vol. 38, no. 6, 2012, pp. 1233-1257, http://dx.doi.org/10.1109/TSE.2012.13
- Y. Kashiwa, K. Shimizu, B. Lin, G. Bavota, M. Lanza, Y. Kamei, and N. Ubayashi, “Does refactoring break tests and to what extent?” in Proc. IEEE International Conference on Software Maintenance and Evolution (ICSME), 2021, pp.171-182, http://dx.doi.org/10.1109/ICSME52107.2021.00022
- Y. Gao, H. Liu, X. Fan, Z. Niu, and B. Nyirongo, “Analyzing refactoring' impact on regression test cases,” in Proc. IEEE 39th Annual Computer Software and Applications Conference (COMPSAC), vol. 2, 2015, pp. 222-231, http://dx.doi.org/10.1109/COMPSAC.2015.16
- H. Passier, L. Bijlsma, C. Bockisch,, “Maintaining unit tests during refactoring,” in Proc. 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, no. 18, 2016, pp.1-6. http://dx.doi.org/10.1145/2972206.2972223
- A. Derezinska, O. Sobieraj, “Enhancing unit tests in refactored Java programs,” in Proc. 18th Inter. Conf. on Evaluation of Novel Approaches to Software Engineering - ENASE, Scitepress, 2023, pp. 734-741, http://dx.doi.org/10.5220/0011997800003464
- M. Gatrell, S. Counsell,S. Swift, R. M. Hierons, and X. Liu, “Test and production classes of an industrial C# system: a refactoring and fault perspective,” in Proc. 41st Euromicro Conference on Software Engineering and Advanced Applications, 2015, http://dx.doi.org/10.1109/SEAA.2015.40
- M. Linka, “Visual Studio refactoring and code style management toolset,” M.S. thesis, Charles University in Prague, 2015.
- E. Firouzi and A. Sami, "Visual Studio automated refactoring tool should improve development time, but ReSharper led to more solution-build failures," in IEEE Workshop on Mining and Analyzing Interaction Histories (MAINT), Hangzhou, China, 2019, pp. 2-6, http://dx.doi.org/10.1109/MAINT.2019.8666936
- S. Amann, S. Proksch, S. Nadi, and M. Mezini, "A study of Visual Studio usage in practice,” in Proc. IEEE 23rd International Conference on Software Analysis Evolution and Reengineering (SANER), vol. 1, pp. 124-134, 2016.
- “Rider: The Cross-Platform .NET IDE from JetBrains,” 2023, https://www.jetbrains.com/rider/, [Online, Accessed 20 Jan 2023]
- Refix, https://galera.ii.pw.edu.pl/~adr/Refix/ [Online , Accessed 30 July 2023]