Manual refactoring changes with automated refactoring validation
Abstract
Refactoring, 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 these tools, they still perform about 90% of refactorings manually, which is error-prone. To address this problem, we propose a technique called GhostFactor separating transformation and correctness checking: we allow the developer to transform code manually, but check the correctness of her transformation automatically. We implemented our technique as a Visual Studio plugin, then evaluated it with a human study of eight software developers; GhostFactor improved the correctness of manual refactorings by 67%.
Integrity signals
Registry
Cites
Statistics
Claims the paper makes
Claims other papers make about this one
Each is checked against this paper’s own text: does it say what the citing paper says it does?
Over 90% of relevant synonyms are unique to software engineering.
“The synonyms problem may relate to Ge et al.'s observation that over 90% of relevant synonyms are unique to software engineering [15].”
From Foraging and navigations, fundamentally: developers' predictions of value and cost (2016) · cites this paper as [15]
Cites
On a Test of Whether one of Two Random Variables is Stochastically Larger than the Other
Mann, H. B., & Whitney, D. R. (1947) · The Annals of Mathematical Statistics · doi:10.1214/aoms/1177730491 · Cited by 14,320 · see citing works
Extreme Programming Explained: Embrace Change
Beck, K. L., & Andres, C. (2000) · Cited by 5,855 · see citing works
Refactoring: Improving the Design of Existing Code
Fowler, M. (2002) · Lecture notes in computer science · doi:10.1007/3-540-45672-4_31 · Cited by 5,615 · see citing works
Refactoring object-oriented frameworks
Opdyke, W. F. (1992) · Cited by 1,014 · see citing works
How We Refactor, and How We Know It
Murphy-Hill, E., Parnin, C., & Black, A. P. (2012) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2011.41 · Cited by 547 · see citing works
Self-citationKerievsky, J. (2004) · Lecture notes in computer science · doi:10.1007/978-3-540-27777-4_54 · Cited by 406 · see citing works
Cherubini, M., Venolia, G. D., DeLine, R., & Ko, A. J. (2007) · CHI Conference on Human Factors in Computing Systems · doi:10.1145/1240624.1240714 · Cited by 262 · see citing works
(2012) · doi:10.1145/2393596.2393655 · Cited by 239 · see citing works
Evolving Object-Oriented Designs with Refactorings
Tokuda, L., & Batory, D. S. (2001) · Automated Software Engineering · doi:10.1023/a:1008715808855 · Cited by 233 · see citing works
Automated testing of refactoring engines
Daniel, B., Dig, D., Garcia, K., & Marinov, D. (2007) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/1287624.1287651 · Cited by 229 · see citing works
Template-based reconstruction of complex refactorings
Prete, K., Rachatasumrit, N., Sudan, N., & Kim, M. (2010) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsm.2010.5609577 · Cited by 207 · see citing works
Identifying Extract Class refactoring opportunities using structural and semantic cohesion measures
Bavota, G., Lucia, A. D., & Oliveto, R. (2010) · Journal of Systems and Software · doi:10.1016/j.jss.2010.11.918 · Cited by 126 · see citing works
Refactoring Practice: How it is and How it Should be Supported - An Eclipse Case Study
Xing, Z., & Stroulia, E. (2006) · Proceedings/Proceedings - Conference on Software Maintenance · doi:10.1109/icsm.2006.52 · Cited by 106 · see citing works
Journal of Software Maintenance: Research and Practice
(2006) · Journal of Software Maintenance Research and Practice · doi:10.1002/(issn)1096-908x · Cited by 96 · see citing works
Does Refactoring Improve Reusability?
Moser, R., Sillitti, A., Abrahamsson, P., & Succi, G. (2006) · Lecture notes in computer science · doi:10.1007/11763864_21 · Cited by 93 · see citing works
Reconciling manual and automatic refactoring
Ge, X., DuBose, Q. L., & Murphy-Hill, E. R. (2014) · Cited by 82 · see citing works
Self-citationSpecifying and implementing refactorings
Schaefer, M., & de Moor, O. (2010) · ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA) · doi:10.1145/1869459.1869485 · Cited by 81 · see citing works
Improving evolvability through refactoring
Ratzinger, J., Fischer, M. D., & Gall, H. C. (2005) · ACM SIGSOFT Software Engineering Notes · doi:10.1145/1082983.1083155 · Cited by 79 · see citing works
Precise identification of problems for structural test generation
Xiao, X., Xie, T., Tillmann, N., & de Halleux, J. (2011) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1145/1985793.1985876 · Cited by 75 · see citing works
WitchDoctor: IDE Support for Real-Time Auto-Completion of Refactorings
Foster, S. R., Griswold, W. G., & Lerner, S. (2013) · Cited by 72 · see citing works
Formalizing refactorings with graph transformations
Mens, T., Eetvelde, N. V., Demeyer, S., & Janssens, D. (2005) · Journal of Software Maintenance and Evolution Research and Practice · doi:10.1002/smr.v17:4 · Cited by 68 · see citing works
Playing with refactoring: Identifying extract class opportunities through game theory
Bavota, G., Oliveto, R., Lucia, A. D., Antoniol, G., & Guéhéneuc, Y. (2010) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsm.2010.5609739 · Cited by 63 · see citing works
A case study in refactoring a legacy component for reuse in a product line
Kolb, R., Muthig, D., Patzke, T., & Yamauchi, K. (2005) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsm.2005.5 · Cited by 63 · see citing works
Stepping Stones over the Refactoring Rubicon
Schäfer, M., Verbaere, M., Ekman, T., & de Moor, O. (2009) · Lecture notes in computer science · doi:10.1007/978-3-642-03013-0_17 · Cited by 53 · see citing works
Improving evolvability through refactoring
Ratzinger, J., Fischer, M., & Gall, H. C. (2005) · doi:10.1145/1083142.1083155 · Cited by 53 · see citing works
A two-step technique for extract class refactoring
Bavota, G., Lucia, A. D., Marcus, A., & Oliveto, R. (2010) · IEEE/ACM International Conference on Automated Software Engineering (ASE) · doi:10.1145/1858996.1859024 · Cited by 50 · see citing works
Formal Specification and Verification of Java Refactorings
Garrido, A., & Meseguer, J. (2006) · IEEE International Workshop on Source Code Analysis and Manipulation (SCAM) · doi:10.1109/scam.2006.16 · Cited by 46 · see citing works
Drag-and-Drop Refactoring: Intuitive and Efficient Program Transformation
Lee, Y. Y., Chen, N., & Johnson, R. E. (2012) · Illinois Digital Environment for Access to Learning and Scholarship (University of Illinois at Urbana-Champaign) · Cited by 34 · see citing works
Differential precondition checking: A lightweight, reusable analysis for refactoring tools
Overbey, J. L., & Johnson, R. E. (2011) · IEEE/ACM International Conference on Automated Software Engineering (ASE) · doi:10.1109/ase.2011.6100067 · Cited by 28 · see citing works
Hannemann, J., Fritz, T., & Murphy, G. C. (2003) · doi:10.1145/965660.965676 · Cited by 22 · see citing works
Programmer-Friendly Refactoring Errors
Murphy-Hill, E. R., & Black, A. P. (2011) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2011.110 · Cited by 17 · see citing works
Self-citationProgrammer Friendly Refactoring Tools
Murphy-Hill, E. R. (2000) · doi:10.15760/etd.2671 · Cited by 14 · see citing works
Self-citation(2010) · Encyclopedia of Case Study Research · doi:10.4135/9781412957397.n118 · Cited by 8 · see citing works
Flagged first, then by citations
3 of the 36 references couldn’t be matched to a known paper.
Cited by
Sorted by citations
Accurate and efficient refactoring detection in commit history
Tsantalis, N., Mansouri, M., Eshkevari, L. M., Mazinanian, D., & Dig, D. (2018) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1145/3180155.3180206 · Cited by 307 · see citing works
Tsantalis, N., Ketkar, A., & Dig, D. (2020) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2020.3007722 · Cited by 212 · see citing works
Multi-Criteria Code Refactoring Using Search-Based Software Engineering
Ouni, A., Kessentini, M., Sahraoui, H. A., Inoue, K., & Deb, K. (2016) · ACM Transactions on Software Engineering and Methodology · doi:10.1145/2932631 · Cited by 140 · see citing works
Mkaouer, M. W., Kessentini, M., Bechikh, S., Cinnéide, M. Ó., & Deb, K. (2015) · Empirical Software Engineering · doi:10.1007/s10664-015-9414-4 · Cited by 87 · see citing works
An Interactive and Dynamic Search-Based Approach to Software Refactoring Recommendations
Alizadeh, V., Kessentini, M., Mkaouer, M. W., Cinnéide, M. Ó., Ouni, A., & Cai, Y. (2020) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2018.2872711 · Cited by 69 · see citing works
Ouni, A., Kessentini, M., Cinnéide, M. Ó., Sahraoui, H. A., Deb, K., & Inoue, K. (2017) · Journal of Software Evolution and Process · doi:10.1002/smr.1843 · Cited by 62 · see citing works
Visual augmentation of source code editors: A systematic mapping study
Sulír, M., Bačíková, M., Chodarev, S., & Porubän, J. (2018) · Journal of Visual Languages & Computing · doi:10.1016/j.jvlc.2018.10.001 · Cited by 40 · see citing works
Ge, X., Sarkar, S., Witschey, J., & Murphy-Hill, E. R. (2017) · IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) · doi:10.1109/vlhcc.2017.8103453 · Cited by 39 · see citing works
Self-citationForaging and navigations, fundamentally: developers' predictions of value and cost
Piorkowski, D., Henley, A. Z., Nabi, T., Fleming, S. D., Scaffidi, C., & Burnett, M. (2016) · Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering · doi:10.1145/2950290.2950302 · Cited by 38 · see citing works
Renaming Global Variables in C Mechanically Proved Correct
Cohen, J. (2016) · Electronic Proceedings in Theoretical Computer Science · doi:10.4204/eptcs.216.3 · Cited by 36 · see citing works
RefDistiller: a refactoring aware code review tool for inspecting manual refactoring edits
Alves, E. L. G., Song, M., & Kim, M. (2014) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/2635868.2661674 · Cited by 35 · see citing works
Towards refactoring-aware regression test selection
Wang, K., Zhu, C., Çelik, A., Kim, J., Batory, D. S., & Gligoric, M. (2018) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1145/3180155.3180254 · Cited by 33 · see citing works
Barik, T., Murphy-Hill, E. R., & Zimmermann, T. (2016) · IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) · doi:10.1109/vlhcc.2016.7739676 · Cited by 29 · see citing works
Self-citationRefactoring Inspection Support for Manual Refactoring Edits
Alves, E. L. G., Song, M., Massoni, T. L., Machado, P. D. L., & Kim, M. (2017) · IEEE Transactions on Software Engineering · doi:10.1109/tse.2017.2679742 · Cited by 26 · see citing works
Automated Refactoring of Legacy Java Software to Default Methods
Khatchadourian, R., & Masuhara, H. (2017) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1109/icse.2017.16 · Cited by 21 · see citing works
Prioritizing test cases for early detection of refactoring faults
Alves, E. L. G., Machado, P. D. L., Massoni, T. L., & Kim, M. (2016) · Software Testing Verification and Reliability · doi:10.1002/stvr.1603 · Cited by 19 · see citing works
The Usability (or Not) of Refactoring Tools
Eilertsen, A. M., & Murphy, G. C. (2021) · IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER) · doi:10.1109/saner50967.2021.00030 · Cited by 16 · see citing works
Vector abstraction and concretization for scalable detection of refactorings
Milea, N. A., Jiang, L., & Khoo, S. (2014) · ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering (ESEC/FSE) · doi:10.1145/2635868.2635926 · Cited by 15 · see citing works
Test coverage of impacted code elements for detecting refactoring faults: An exploratory study
Alves, E. L. G., Massoni, T. L., & Machado, P. D. L. (2016) · Journal of Systems and Software · doi:10.1016/j.jss.2016.02.001 · Cited by 14 · see citing works
DEPICTER: A Design-Principle Guided and Heuristic-Rule Constrained Software Refactoring Approach
Zhao, Y., Yang, Y., Zhou, Y., & Ding, Z. (2022) · IEEE Transactions on Reliability · doi:10.1109/tr.2022.3159851 · Cited by 11 · see citing works
No half-measures: A study of manual and tool-assisted end-user programming tasks in Excel
Pandita, R., Parnin, C., Hermans, F., & Murphy-Hill, E. R. (2018) · IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) · doi:10.1109/vlhcc.2018.8506540 · Cited by 9 · see citing works
Self-citationA declarative enhancement of JavaScript programs by leveraging the Java metadata infrastructure
Wang, Y., Cheng, K. S., Song, M., & Tilevich, E. (2019) · Science of Computer Programming · doi:10.1016/j.scico.2019.05.005 · Cited by 7 · see citing works
Improving regression test efficiency with an awareness of refactoring changes
Chen, Z., Guo, H.-F., & Song, M. (2018) · Information and Software Technology · doi:10.1016/j.infsof.2018.07.003 · Cited by 7 · see citing works
A Tool Supporting Postponable Refactoring
Maruyama, K., & Hayashi, S. (2017) · ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) · doi:10.1109/icse-c.2017.108 · Cited by 6 · see citing works
Test coverage and impact analysis for detecting refactoring faults
Alves, E. L. G., Massoni, T. L., & Machado, P. D. L. (2015) · ACM Symposium on Applied Computing · doi:10.1145/2695664.2695811 · Cited by 5 · see citing works
Towards Leveraging Tests to Identify Impacts of Metamodel and Code Co-evolution
Kebaili, Z. K., Khelladi, D. E., Acher, M., & Barais, O. (2023) · Lecture notes in business information processing · doi:10.1007/978-3-031-34674-3_16 · Cited by 4 · see citing works
A Prototype for Software Refactoring Recommendation System
Gao, Y., Zhang, Y., Wenpen, L., Luo, J., & Daqing, H. (2020) · International Journal of Performability Engineering · doi:10.23940/ijpe.20.07.p12.10951104 · Cited by 4 · see citing works
Kim, M., Meng, N., & Zhang, T. (2019) · Springer eBooks · doi:10.1007/978-3-030-00262-6_6 · Cited by 4 · see citing works
Change Pattern Detection for Optimising Incremental Static Analysis
Wauters, C., der Plas, J. V., Stiévenart, Q., & Roover, C. D. (2023) · IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM) · doi:10.1109/scam59687.2023.00016 · Cited by 4 · see citing works
What Kinds of Refactorings are Co-Occurred? An Analysis of Eclipse Usage Datasets
Saika, T., Choi, E., Yoshida, N., Gotō, A., Haruna, S., & Inoue, K. (2014) · International Workshop on Empirical Software Engineering in Practice (IWESEP) · doi:10.1109/iwesep.2014.15 · Cited by 4 · see citing works
Challenges in Using Conversational AI for Data Science
Chopra, B., Singha, A., Fariha, A., Gulwani, S., Parnin, C., Tiwari, A., & Henley, A. Z. (2025) · Workshop on Human-In-the-Loop Data Analytics (HILDA) · doi:10.1145/3736733.3736748 · Cited by 3 · see citing works
Improving the software quality — an educational approach
Bozhikova, V., Stoeva, M., Georgiev, B., & Nikolaeva, D. Z. (2017) · International Scientific Conference Electronics (ET) · doi:10.1109/et.2017.8124337 · Cited by 3 · see citing works
CodeDeviant: Helping Programmers Detect Edits That Accidentally Alter Program Behavior
Henley, A. Z., & Fleming, S. D. (2018) · IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) · doi:10.1109/vlhcc.2018.8506567 · Cited by 3 · see citing works
Eilertsen, A. M., & Murphy, G. C. (2021) · IEEE International Conference on Software Maintenance (ICSM) · doi:10.1109/icsme52107.2021.00070 · Cited by 3 · see citing works
Towards improving interface modularity in legacy Java software through automated refactoring
Khatchadourian, R., Moore, O., & Masuhara, H. (2016) · doi:10.1145/2892664.2892681 · Cited by 2 · see citing works
Automated testing of metamodels and code co-evolution
Kebaili, Z. K., Khelladi, D. E., Acher, M., & Barais, O. (2024) · Software & Systems Modeling · doi:10.1007/s10270-024-01245-2 · Cited by 2 · see citing works
You Don’t Have to Say Where to Edit! jLED—Joint Learning to Localize and Edit Source Code
Pian, W., Li, Y., Tian, H., Sun, T., Song, Y., Tang, X., Habib, A., Klein, J., & Bissyandé, T. F. (2025) · ACM Transactions on Software Engineering and Methodology · doi:10.1145/3712187 · Cited by 2 · see citing works
KinEdit: a tool to help developers refactor manually
Terrell, J. (2015) · ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity (SPLASH) · doi:10.1145/2814189.2815366 · Cited by 2 · see citing works
Improving Tool Support for Software Developers through Refactoring Detection.
Ge, X. (2014) · NCSU Libraries Repository (North Carolina State University Libraries) · Cited by 2 · see citing works
Self-citationImpact of change granularity in refactoring detection
Chen, L., & Hayashi, S. (2022) · IEEE International Conference on Program Comprehension (ICPC) · doi:10.1145/3524610.3528386 · Cited by 2 · see citing works
Post-Refactoring Recovery of Unit Tests: An Automated Approach
Qusef, A. D., Murad, S. F., Alsalhi, N. R., & Shudayfat, E. A. (2023) · International Journal of Interactive Mobile Technologies (iJIM) · doi:10.3991/ijim.v17i08.38785 · Cited by 1 · see citing works
An empirical study on the impact of change granularity in refactoring detection
Chen, L., & Hayashi, S. (2025) · Journal of Systems and Software · doi:10.1016/j.jss.2025.112608 · Cited by 1 · see citing works
Refactoring verification using model transformation
Ichii, M., Shimbara, D., Suzuki, Y., & Ogawa, H. (2016) · doi:10.1145/2975945.2975950 · Cited by 1 · see citing works
Nourry, O., Kashiwa, Y., Kamei, Y., & Ubayashi, N. (2021) · Information and Software Technology · doi:10.1016/j.infsof.2021.106623 · Cited by 1 · see citing works
A Correct Refactoring Operation to Rename Global Variables in C Programs
Cohen, J. (2015) · HAL
A Mono- and Multi-objective Approach for
Ouni, A. (2014)
Personalized Multi-Objective Approach for Refactoring Recommendations
Dea, J., Kessentini, M., & Ouni, A. (2017) · Deep Blue (University of Michigan)
Tool support for managing repetitive program changes in evolving software
Epuri, V. K., Sakala, S., Ahn, T.-H., & Song, M. (2019) · IET Software · doi:10.1049/iet-sen.2018.5356
A Systematic Literature Review on Software Refactoring
Elhazzat, J. (2020) · Deep Blue (University of Michigan)
Commits Analysis for Software Refactoring Documentation and Recommendation
Rebai, S. (2021) · Deep Blue (University of Michigan) · doi:10.7302/2532
Visual Augmentation of Source Code Editors: A Systematic Mapping Study
Sulír, M., Bačíková, M., Chodarev, S., & Porubän, J. (2021) · doi:10.26226/morressier.613b545d842293c031b5b99f
Evaluating the Effectiveness of Regression Test Suites for Extract Method Validation
Gomes, L., Cordeiro, C., & Alves, E. L. G. (2022) · Brazilian Symposium on Systematic and Automated Software Testing (SAST) · doi:10.1145/3559744.3559745
Automated Binary Program Partitioning through Structural Analysis
Alexiou, M. S., & Mertoguno, J. S. (2023) · International Conference on Information, Intelligence, Systems & Applications (IISA) · doi:10.1109/iisa59645.2023.10345849
Santana, M. E. C., de Andrade, M. H. S., & Tavares, C. S. (2026) · doi:10.5753/cbsoft_estendido.2026.31787
- Authors
- Ge, X., & Murphy-Hill, E.
- Affiliations
- North Carolina State University (US)
- Venue
- Proceedings of the 36th International Conference on Software Engineering
- Publisher
- ACM
- Published
- 2014-05-31
- Pages
- 1095-1105
- ISSN
- 0270-5257 (ISSN-L)
- OpenAlex
- W2030158765
- Cited by
- 55
- References
- 36
- Citations by year
- 2026: 1 · 2025: 3 · 2024: 1 · 2023: 4 · 2022: 3 · 2021: 5 · 2020: 4 · 2019: 3 · 2018: 6 · 2017: 7 · 2016: 8 · 2015: 4 · 2014: 6
- FWCI
- 7.11
- Type
- conference paper
- Language
- en
- Open access
- closed
- Locations
- ACM/IEEE International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) (publishedVersion)
- Topics
- Physical Sciences › Computer Science › Information Systems › Software Engineering Research
- Physical Sciences › Computer Science › Information Systems › Software Engineering Techniques and Practices
- Physical Sciences › Computer Science › Software › Model-Driven Software Engineering Techniques
- Keywords
- software quality
About these checks
Registry, retraction, Cites and statistics results are computed, not judged, with one exception: a printed reference that no index lists is read once by a model before it counts as a citation error. Claims are extracted by a model and kept only when their quote appears verbatim in the text; each cited source is then checked, with a model’s help, for whether it says what the claim relies on. Those verdicts can be wrong — read the claim’s quote and the cited source before relying on one.
Statistics and arithmetic are recomputed, not judged.
Confidence bands are shown only for fields calibrated on our annotated test set. None is calibrated yet, so no band is shown.
What counts as a claim ›How we measure confidence ›How we check this ›
Are you an author, or do you see a problem with this page? Request a review