void RemoverPass::run_pass(DexStoresVector& dexen, ConfigFiles& cfg, PassManager& mgr) { CMethodStrs rMethodStrs; CMethodStrs aMethodStrs; std::ifstream aFile; f_name_rmethods = cfg.get_rmethods(); if (f_name_rmethods.empty()) { f_name_rmethods = "methods_to_remove.csv"; std::cout << "Using default file " << f_name_rmethods << std::endl; } else std::cout << "Using custom file " << f_name_rmethods << std::endl; f_name_amethods = cfg.get_amethods(); if (f_name_amethods.empty()) { f_name_amethods = "methods_to_make_abstract.csv"; std::cout << "Using default file " << f_name_amethods << std::endl; } else std::cout << "Using custom file " << f_name_amethods << std::endl; std::cout << "Reading list of methods to remove from " << f_name_rmethods << "..." << std::endl; read_methods(f_name_rmethods, rMethodStrs); std::cout << "Reading list of methods to make abstract from " << f_name_amethods << "..." << std::endl; read_methods(f_name_amethods, aMethodStrs); Scope scope = build_class_scope(dexen); std::cout << "Method removal pass" << std::endl; remove_methods(scope, rMethodStrs); std::cout << "Method abstraction optimization" << std::endl; make_methods_abstract(scope, aMethodStrs); std::cout << "Method removal pass done." << std::endl; }