def test2(): ant_dir = "/home/ali/Desktop/code/TestProject/" res = main( source_filenames=symbol_table.get_filenames_in_dir(ant_dir), package_name="test_package", class_names=["AppChild1", "AppChild2"], method_keys=["printTest()"], interface_name="ExtractedInterface", interface_filename="/home/ali/Desktop/code/TestProject/src/test_package/ExtractedInterface.java", # lambda x: "tests/extract_interface_ant/" + x[len(ant_dir):] ) print(res)
def main(project_dir: str, package_name: str, children_class: str, field_name: str, *args, **kwargs): """ """ # print("Pull-up field") result = PullUpFieldRefactoring( symbol_table.get_filenames_in_dir(project_dir), package_name, children_class, field_name # lambda x: "tests/pullup_field_ant/" + x[len(ant_dir):] ).do_refactor() # print(f"Success pull-up field {field_name}" if result else f"Cannot pull-up field {field_name}") return result
def main(project_dir, source_package, source_class, field_name, target_classes: list, *args, **kwargs): """ """ res = PushDownField( symbol_table.get_filenames_in_dir(project_dir), package_name=source_package, superclass_name=source_class, field_name=field_name, class_names=target_classes, ).do_refactor() if not res: logger.error("Cannot push-down field") return False return True
def check(self): super_classes = [] packages = self.program.packages for package_item in 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.modifiers[0] == 'abstract': while class_item_dic.superclass_name: super_class = self.find_super_type( class_item_dic.superclass_name) if super_class.modifiers[0] == 'abstract': print("Find : cyclic dependent modularization...") return class_item_dic = super_class 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 if __name__ == "__main__": mylist = get_filenames_in_dir('C:/Users/Qafari/Desktop/propagationTest') print("start ....") CyclicDependentModularization(mylist).check() print("finish ....")