{"title":"KennyRiMr:一个提高Java中Rename方法重构正确性的Eclipse插件","authors":"Kathryn Kenny, Jongwook Kim, Eric Lacker","doi":"10.1109/SEAA56994.2022.00026","DOIUrl":null,"url":null,"abstract":"Rename Instance Method Refactoring (RiMr) is a behavior-preserving code transformation that changes the name of a non-static method declaration along with its references (i.e., method calls) while preserving all method bindings over an entire program. RiMr checks a set of preconditions to ensure that the original method bindings will be preserved after rename. Only when all preconditions are satisfied, are the method declaration and references transformed. A decade ago, however, it was found that RiMr offered by Java Integrated Development Environment (IDE) tools may change existing method bindings due to incorrect precondition checks, which consequently cause program behavior changes. Surprisingly, we found that none of the current Java IDEs have corrected those flaws in their RiMr preconditions.We created a Java RiMr tool (called KennyRiMr) as an Eclipse JDT plug-in that addresses the method rebinding issues in RiMr. We verified the correctness of KennyRiMr with thirteen nontrivial programs in terms of precondition checks and code transformations. Our experiments demonstrated that KennyRiMr fixed all known flaws in RiMr preconditions, requiring merely a few more seconds to process the additional precondition checks that we introduced. With KennyRiMr, correctness remains consistent regardless of program size.","PeriodicalId":269970,"journal":{"name":"2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2022-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"KennyRiMr: An Eclipse Plug-in to Improve Correctness of Rename Method Refactoring in Java\",\"authors\":\"Kathryn Kenny, Jongwook Kim, Eric Lacker\",\"doi\":\"10.1109/SEAA56994.2022.00026\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Rename Instance Method Refactoring (RiMr) is a behavior-preserving code transformation that changes the name of a non-static method declaration along with its references (i.e., method calls) while preserving all method bindings over an entire program. RiMr checks a set of preconditions to ensure that the original method bindings will be preserved after rename. Only when all preconditions are satisfied, are the method declaration and references transformed. A decade ago, however, it was found that RiMr offered by Java Integrated Development Environment (IDE) tools may change existing method bindings due to incorrect precondition checks, which consequently cause program behavior changes. Surprisingly, we found that none of the current Java IDEs have corrected those flaws in their RiMr preconditions.We created a Java RiMr tool (called KennyRiMr) as an Eclipse JDT plug-in that addresses the method rebinding issues in RiMr. We verified the correctness of KennyRiMr with thirteen nontrivial programs in terms of precondition checks and code transformations. Our experiments demonstrated that KennyRiMr fixed all known flaws in RiMr preconditions, requiring merely a few more seconds to process the additional precondition checks that we introduced. With KennyRiMr, correctness remains consistent regardless of program size.\",\"PeriodicalId\":269970,\"journal\":{\"name\":\"2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2022-08-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/SEAA56994.2022.00026\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/SEAA56994.2022.00026","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
KennyRiMr: An Eclipse Plug-in to Improve Correctness of Rename Method Refactoring in Java
Rename Instance Method Refactoring (RiMr) is a behavior-preserving code transformation that changes the name of a non-static method declaration along with its references (i.e., method calls) while preserving all method bindings over an entire program. RiMr checks a set of preconditions to ensure that the original method bindings will be preserved after rename. Only when all preconditions are satisfied, are the method declaration and references transformed. A decade ago, however, it was found that RiMr offered by Java Integrated Development Environment (IDE) tools may change existing method bindings due to incorrect precondition checks, which consequently cause program behavior changes. Surprisingly, we found that none of the current Java IDEs have corrected those flaws in their RiMr preconditions.We created a Java RiMr tool (called KennyRiMr) as an Eclipse JDT plug-in that addresses the method rebinding issues in RiMr. We verified the correctness of KennyRiMr with thirteen nontrivial programs in terms of precondition checks and code transformations. Our experiments demonstrated that KennyRiMr fixed all known flaws in RiMr preconditions, requiring merely a few more seconds to process the additional precondition checks that we introduced. With KennyRiMr, correctness remains consistent regardless of program size.