def main(): # folder_path = "..\\benchmark_projects\\JSON\\src\\main\\java\\org\\json" folder_path = "/data/Dev/JavaSample/" path = get_filenames_in_dir(folder_path) print(path) # target_class = "CDL" target_class = "ReplaceConstructorWithFactoryMethod" for file in path: if file.endswith('.java') and not file.endswith('_refactored.java'): stream = FileStream(file) lexer = JavaLexer(stream) tokens = CommonTokenStream(lexer) parser = JavaParserLabeled(tokens) tree = parser.compilationUnit() new_file = open(file, mode='w', newline='') listener = ReplaceConstructorWithFactoryFunctionRefactoringListener(common_token_stream=tokens, target_class=target_class) walker = ParseTreeWalker() walker.walk( listener=listener, t=tree ) new_code = str(listener.codeRewrite.getDefaultText()) new_file.write(new_code)
def main(project_dir: str, package_name: str, children_class: str, field_name: str): print("Pullup Field") print("Success!" if PullUpFieldRefactoring( utils2.get_filenames_in_dir(project_dir ), package_name, children_class, field_name # lambda x: "tests/pullup_field_ant/" + x[len(ant_dir):] ).do_refactor() else "Cannot refactor.")
def main(project_dir: str, package_name: str, children_class: str, field_name: str, *args, **kwargs): # print("Pull-up field") print(f"Success pull-up field {field_name}" if PullUpFieldRefactoring( utils2.get_filenames_in_dir(project_dir ), package_name, children_class, field_name # lambda x: "tests/pullup_field_ant/" + x[len(ant_dir):] ).do_refactor() else f"Cannot pull-up field {field_name}")
def test_ant(): """ target_files = [ "tests/apache-ant/main/org/apache/tools/ant/types/ArchiveFileSet.java", "tests/apache-ant/main/org/apache/tools/ant/types/TarFileSet.java", "tests/apache-ant/main/org/apache/tools/ant/types/ZipFileSet.java" ] """ ant_dir = "/home/ali/Desktop/code/TestProject/" print("Success!" if PushDownField( utils2.get_filenames_in_dir(ant_dir), "test_package", "App", "push_down", [], # lambda x: "tests/pushdown_field_ant/" + x[len(ant_dir):] ).do_refactor() else "Cannot refactor.")
def main(): """ target_files = [ "tests/apache-ant/main/org/apache/tools/ant/input/InputRequest.java", "tests/apache-ant/main/org/apache/tools/ant/input/MultipleChoiceInputRequest.java" ] """ ant_dir = "/home/ali/Desktop/code/TestProject/" print("Success!" if ExtractInterfaceRefactoring( utils2.get_filenames_in_dir(ant_dir), "test_package", ["AppChild1", "AppChild2"], ["printTest()"], "ExtractedInterface", "/home/ali/Desktop/code/TestProject/src/test_package/ExtractedInterface.java", # lambda x: "tests/extract_interface_ant/" + x[len(ant_dir):] ).do_refactor() else "Cannot refactor.")
super_class = self.find_super_type( class_item_dic.superclass_name) super_classes.append(super_class.package_name + '.' + super_class.name) cycle = self.cycle_check(super_classes) class_item_dic = super_class if cycle: print("Find : cyclic inheritance hierarchy...") return def find_super_type(self, class_name): for package_item in self.program.packages: package_item_dic = self.program.packages[package_item] for classes_item in package_item_dic.classes: class_item_dic = package_item_dic.classes[classes_item] if class_item_dic.name == class_name: return class_item_dic def cycle_check(self, list): if len(list) == len(set(list)): return False else: return True if __name__ == "__main__": mylist = get_filenames_in_dir('C:/Users/Qafari/Desktop/propagationTest') print("start ....") CyclicHierarchy(mylist).check() print("finish ....")
else: token_stream_rewriter.insertBeforeIndex( method_declaration_info.stop, text=self.class_name + " " + str.lower(self.class_name)) strofmethod = token_stream_rewriter.getText( program_name=token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=tokens_info.start, stop=tokens_info.stop) Rewriter_.insert_before(tokens_info=class_tokens_info, text=strofmethod) Rewriter_.insert_after( package_tokens_info, "import " + self.target_package_name + "." + self.target_class_name + ";") Rewriter_.replace(tokens_info, "") Rewriter_.apply() return True if __name__ == "__main__": mylist = get_filenames_in_dir('/home/ali/Desktop/code/TestProject/') # mylist = get_filenames_in_dir('tests/movemethod_test') print("Testing move_method...") if MoveMethodRefactoring(mylist, "test_package", "AppChild1", "testFunc()", "AppChild2", "test_package").do_refactor(): # if move_method_refactoring(mylist, "ss", "source", "m(int)","target","sss"): print("Success!") else: print("Cannot refactor.")
class_tokens_info = TokensInfo(_targetclass.parser_context.classBody()) class_tokens_info.stop = class_tokens_info.start key = min(len_params, key=len_params.get) _method_name1 = program.packages[ self.package_name].classes[key].methods[removemethod[key][0]] tokens_info = TokensInfo(_method_name1.parser_context) singlefileelement = SingleFileElement(_method_name1.parser_context, _method_name1.filename) token_stream_rewriter = TokenStreamRewriter( singlefileelement.get_token_stream()) strofmethod = token_stream_rewriter.getText( program_name=token_stream_rewriter.DEFAULT_PROGRAM_NAME, start=tokens_info.start, stop=tokens_info.stop) strofmethod = strofmethod.replace(_method_name1.class_name, target_class_name) Rewriter_.insert_after(tokens_info=class_tokens_info, text=strofmethod) Rewriter_.apply() return True if __name__ == "__main__": mylist = get_filenames_in_dir('/data/Dev/JavaSample/') if PullUpConstructorRefactoring(mylist, "", "Admin").do_refactor(): print("Success!") else: print("Cannot refactor.")
def clean_up_dir(files: list) -> list: """ :param files: List of files in the project directory :return: list Cleans up trashed files and gives original files """ original_files = list() for file in files: if "rewritten.java" in file: os.remove(file) else: original_files.append(file) return original_files if __name__ == '__main__': path = "/data/Dev/JavaSample/" my_list = get_filenames_in_dir(path) filtered = clean_up_dir(my_list) refactoring = MoveFieldRefactoring(filtered, 'my_package', 'Source', 'number', 'Target', 'my_package') result = refactoring.move() print(result)
is_public = "public" in method.modifiers is_protected = "protected" in method.modifiers is_private = "private" in method.modifiers for c in classes_to_add_to: c_body_start = utils_listener_fast.TokensInfo( c.parser_context.classBody()) c_body_start.stop = c_body_start.start rewriter.insert_after( c_body_start, "\n\n %s %s %s() {\n %s\n }\n" % (" ".join(method.modifiers), method.returntype, method.name, method.body_text[1:-1])) method_token_info = utils_listener_fast.TokensInfo( method.parser_context) rewriter.replace(method_token_info, "") rewriter.apply() return True if __name__ == "__main__": my_list = get_filenames_in_dir( 'D:/archive/uni/CD/project/CodART/tests/pushdown_method/vehicle') print("Testing pushdown_method...") if PushDownMethodRefactoring(my_list, "pushdown_method_test_vehicle", "Vehicle", "epicMethod()").do_refactor(): print("Success!") else: print("Cannot refactor.")