def createResOriginalFaultVersionInShellArgsMode(): mutation_list = [] with open( "./second_order_mutant_extend/result/logs/res_execute_mutant.txt", "r") as f: mutation_list = f.read() mutation_list = mutation_list.split("\n")[:-1] f.close() input_path = args.inputs_dir input_list = [] with open("./output/input_list.txt", "r") as f: input_list = f.read().split("\n")[:-1] f.close() # 打开所有测试用例文件,读取文件内的参数 list_input_args = [] for i in range(len(input_list)): f = open(input_path + input_list[i], 'r') input_args = f.read() list_input_args.append(input_args) f.close() file_name = "" compile_dir = args.second_order_mutant_path + "compile/" con_list = os.walk(compile_dir) for path, path_l, file_names in con_list: file_name = file_names[0] file_name = file_name[:util.findIndex(file_name, "_")[-1]] f = open("./create_res_original_fault_version_second_order_in.sh", "w") f.write("chmod 777 " + compile_dir + "*\n") f.write( "rm ./output/res_original_version.in ./output/res_fault_version.in\n") f.write( "touch ./output/res_original_version.in ./output/res_fault_version.in\n" ) f.write("\n\n") #f = open("./create_res_original_fault_version_in.sh", "a") for excute_mutation in mutation_list: f.write("mkdir ./temp_outputs/\n") for input_args, input_sample in zip(list_input_args, input_list): f.write('echo "<<<<<<<<<<<' + file_name + '_' + excute_mutation + '.c.exe ||run| ' + input_sample + '"\n') f.write('timeout ' + str(args.timeout) + " " + compile_dir + file_name + '_' + excute_mutation + '.c.exe ' + input_args + ' > ./temp_outputs/' + input_sample + '.out\n') f.write( "python ./second_order_mutant_extend/append_res_original_version_in.py --true_root_dir " + args.true_root_dir + "\n") f.write( "python ./second_order_mutant_extend/append_res_fault_version_in.py --defect_root_dir " + args.defect_root_dir + "\n") f.write("rm -rf ./temp_outputs/\n") f.write("\n") f.close()
def createRunDefectSourceScriptArgsMode(defect_root_dir, defect_source_path, timeout, inputs_dir): # 获取测试用例文件列表 f = open("./output/input_list.txt", 'r') input_paths = f.read().split("\n")[:-1] f.close() # 打开所有测试用例文件,读取文件内的参数 list_input_args = [] for i in range(len(input_paths)): f = open(inputs_dir + input_paths[i], 'r') input_args = f.read() list_input_args.append(input_args) f.close() # 生成运行缺陷源代码的run_cov.sh脚本 f = open(defect_root_dir + "run_cov.sh", "w") f.writelines("rm -rf " + defect_root_dir + "gcov\nmkdir " + defect_root_dir + "gcov\nmkdir " + defect_root_dir + "outputs\n") f.writelines("gcc -fprofile-arcs -ftest-coverage " + defect_source_path + " -o " + defect_source_path + ".exe -lm\n") source_file_name = defect_source_path[ util.findIndex(defect_source_path, "/")[-1] + 1:util.findIndex(defect_source_path, ".")[-1]] f.writelines("mv " + source_file_name + ".gcno " + defect_source_path + ".gcno\n\n") for i in range(len(input_paths)): command = 'echo ">>>>>>>>running test ' + str(i + 1) + '"\n' f.writelines(command) command = "timeout " + str(timeout) + " " \ + defect_source_path +".exe " \ + list_input_args[i] +" > "\ + defect_root_dir + "outputs/" + input_paths[i]+".out\n" \ + "mv " + source_file_name + ".gcda " + defect_source_path + ".gcda\n" \ + "gcov " + defect_source_path + ".exe" \ + "\nmv " + source_file_name + ".c.gcov " \ + defect_root_dir + "gcov/" + source_file_name \ + ".gcov." + str(i+1) + "\n\n" f.writelines(command) f.writelines("rm " + defect_source_path + ".gcno\n") f.writelines("rm " + defect_source_path + ".gcda\n") f.close()
def select(self, selectId, throw=False): try: ix = findIndex(lambda item: item[0] == selectId, self._iddList, True) self.current(ix) self.event_generate('<<ComboboxSelect>>') except ValueError: if throw: raise KeyError("selectId '%s' not found" % selectId)
def setOptionRandomly(self, answer, dummy1, dummy2, dummy3): optionList = [(answer, True), (dummy1, False), (dummy2, False), (dummy3, False)] random.shuffle(optionList) answerButtonNumber = findIndex(lambda x: x[1], optionList) + 1 options = [x[0] for x in optionList] self.setAnswerButton(answerButtonNumber) self.setButtonsText(options[0], options[1], options[2], options[3])
def createResOriginalFaultVersionInShellFileMode(): f_create_shell = open("./create_res_original_fault_version_in.sh", "w") mutation_list = [] with open(args.mutant_root + "res_execute_mutant.txt", "r") as f: mutation_list = f.read() mutation_list = mutation_list.split("\n")[:-1] f.close() input_path = args.inputs_dir input_list = [] with open("./output/input_list.txt", "r") as f: input_list = f.read().split("\n")[:-1] f.close() file_name = "" compile_dir = "./_SBFL_randomization_higher_order_mutant_set/compile/" con_list = os.walk(compile_dir) for path, path_l, file_names in con_list: file_name = file_names[0] file_name = file_name[:util.findIndex(file_name, "_")[-1]] f_create_shell.write("chmod 777 " + compile_dir +"*\n") f_create_shell.write("rm ./_SBFL_randomization_higher_order_mutant_set/res_original_version.in ./_SBFL_randomization_higher_order_mutant_set/res_fault_version.in\n") f_create_shell.write("touch ./_SBFL_randomization_higher_order_mutant_set/res_original_version.in ./_SBFL_randomization_higher_order_mutant_set/res_fault_version.in\n") f_create_shell.write("\n\n") #f = open("./create_res_original_fault_version_in.sh", "a") for excute_mutation in mutation_list: f_create_shell.write("mkdir ./temp_outputs/\n") for input_sample in input_list: f_create_shell.write("nowtime=`date +'%Y-%m-%d %H:%M:%S'`\n") f_create_shell.write('echo "=====[nowtime]: "$nowtime\n') f_create_shell.write('echo "<<<<<<<<<<<'+file_name+'_' + excute_mutation + '.c.exe ||run| '+ input_sample +'"\n') f_create_shell.write('timeout ' + str(args.timeout) + " " + compile_dir + file_name + '_' + excute_mutation + '.c.exe < ' + input_path + input_sample + ' > ./temp_outputs/' + input_sample + '.out\n') f_create_shell.write('return_code=$?\n') f_create_shell.write('echo return_code=$return_code\n') f_create_shell.write('if [ $return_code -eq 124 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('if [ $return_code -eq 134 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('if [ $return_code -eq 139 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('\n') f_create_shell.write("python3 SBFL_randomization_higher_order_MBFL/append_res_original_version_in.py --true_root_dir " + args.true_root_dir + "\n") f_create_shell.write("python3 SBFL_randomization_higher_order_MBFL/append_res_fault_version_in.py --defect_root_dir " + args.defect_root_dir + "\n") f_create_shell.write("rm -rf ./temp_outputs/\n") f_create_shell.write("\n") f_create_shell.close()
def select(self, selectId, throw=False): self.select_clear(0, tk.END) try: ix = findIndex(lambda item: item[0] == selectId, self._iddList, True) self.select_set(ix) self.event_generate('<<ListboxSelect>>') except ValueError: if throw: raise KeyError("selectId '%s' not found" % selectId)
with open("mutation_operator_no_space.json", 'r') as f: s = f.read() f.close() return json.loads(s) if __name__ == "__main__": # read the source file source_list = readSource(parserCommad().defect_source_path) # read mutant operator mutant_opt = getMutantOperator() # to find and write all the feasible operator with open("./output/all_res_record.txt", 'w') as f: f.write("") # create and clean res_record.txt f.close() f = open("./output/all_res_record.txt", 'a') for line_index in range(len(source_list)): source_line = source_list[line_index] for key in mutant_opt: if util.isFind(source_line, key): for value in mutant_opt[key]: for loc in util.findIndex(source_line, key): f.write("line: " + str(line_index + 1) + " index: " + str(loc) + " original: " + key + "\tmutated: " + value + '\n') f.close()
mutant_index = int(res_record_line.split("index: ")[1].split(" original:")[0]) original = res_record_line.split("original: ")[1].split(" mutated:")[0] mutated = res_record_line.split("mutated: ")[1] mu_source = f.readlines() main_str = mu_source[original_line - 1] left_str = main_str[:mutant_index] right_str = main_str[mutant_index + len(original):] mu_source[original_line - 1] = left_str + mutated + right_str f.seek(0, 0) # Reset the pointer of reading file for mu_source_line in mu_source: f.writelines(mu_source_line) f.close() if __name__ == "__main__": args = parserCommad() defect_source_name = args.defect_source_path[util.findIndex(args.defect_source_path, "/")[-1] + 1:] defect_source_path = args.defect_source_path[: util.findIndex(args.defect_source_path, "/")[-1] + 1] mutant_root = args.mutant_root # print(defect_source_name) # print(defect_source_path) str_mutant_source_path = mutant_root + "Mutant_source/" if not os.path.exists(str_mutant_source_path): os.mkdir(str_mutant_source_path) Mutation(mutant_root+"res_record.txt", defect_source_name, defect_source_path, str_mutant_source_path)
help='mutant root dictionary.') parser.add_argument('--version', action='version', version='%(prog)s 1.0') results = parser.parse_args() return results if __name__ == "__main__": compile_dir = parserCommad().mutant_root + "compile/" file_name_list = os.listdir(compile_dir) file_name = file_name_list[0] replace_index = util.findIndex(file_name, "_") file_name = file_name[:replace_index[-1]] mutation_dir = parserCommad().mutant_root + "Mutation_source/" mutation_file_list = os.listdir(mutation_dir) mutation_file_number = len(mutation_file_list) with open("./_MBFL_randomization_higher_order_mutant_set/res_execute_mutant.txt", 'w') as f: f.write("") # create and clean res_record.txt f.close() f = open("./_MBFL_randomization_higher_order_mutant_set/res_execute_mutant.txt", 'a') for i in range(mutation_file_number): file_temp_name = file_name + "_" +str(i+1) + ".c.exe" if file_temp_name in file_name_list: f.write(str(i+1)+"\n")
def createResOriginalFaultVersionInShellArgsMode(): f_create_shell = open( "./create_RQ1_ideal_res_original_fault_version_in.sh", "w") mutation_list = [] with open("./_RQ1_mutant_set/mutant_set_ideal/res_execute_mutant.txt", "r") as f: mutation_list = f.read() mutation_list = mutation_list.split("\n")[:-1] f.close() input_path = args.inputs_dir input_list = [] with open("output/input_list.txt", "r") as f: input_list = f.read().split("\n")[:-1] f.close() # 打开所有测试用例文件,读取文件内的参数 list_input_args = [] for i in range(len(input_list)): f = open(input_path + input_list[i], 'r') input_args = f.read() list_input_args.append(input_args) f.close() file_name = "" compile_dir = "./_RQ1_mutant_set/mutant_set_ideal/compile/" con_list = os.walk(compile_dir) for path, path_l, file_names in con_list: file_name = file_names[0] file_name = file_name[:util.findIndex(file_name, "_")[-1]] f_create_shell.write("chmod 777 " + compile_dir + "*\n") f_create_shell.write( "rm " + "./_RQ1_mutant_set/mutant_set_ideal/res_original_version.in ./_RQ1_mutant_set/mutant_set_ideal/res_fault_version.in\n" ) f_create_shell.write( "touch ./_RQ1_mutant_set/mutant_set_ideal/res_original_version.in ./_RQ1_mutant_set/mutant_set_ideal/res_fault_version.in\n" ) f_create_shell.write("\n\n") #f = open("./create_res_original_fault_version_in.sh", "a") for excute_mutation in mutation_list: f_create_shell.write("mkdir ./temp_outputs/\n") for input_args, input_sample in zip(list_input_args, input_list): f_create_shell.write("nowtime=`date +'%Y-%m-%d %H:%M:%S'`\n") f_create_shell.write('echo "=====[nowtime]: "$nowtime\n') f_create_shell.write('echo "<<<<<<<<<<<' + file_name + '_' + excute_mutation + '.c.exe ||run| ' + input_sample + '"\n') f_create_shell.write('timeout ' + str(args.timeout) + " " + compile_dir + file_name + '_' + excute_mutation + '.c.exe ' + input_args + ' > ./temp_outputs/' + input_sample + '.out\n') f_create_shell.write('return_code=$?\n') f_create_shell.write('echo return_code=$return_code\n') f_create_shell.write('if [ $return_code -eq 124 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('if [ $return_code -eq 134 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('if [ $return_code -eq 139 ]; then\n') f_create_shell.write('rm -rf ' + compile_dir + file_name + '_' + excute_mutation + '.c.exe\n') f_create_shell.write('echo \"' + compile_dir + file_name + '_' + excute_mutation + '.c.exe was deleted successfully.\"\n') f_create_shell.write('fi\n') f_create_shell.write('\n') f_create_shell.write( "python3 ideal_higher_mutant_set_extend/append_RQ1_ideal_res_original_version_in.py --true_root_dir " + args.true_root_dir + "\n") f_create_shell.write( "python3 ideal_higher_mutant_set_extend/append_RQ1_ideal_res_fault_version_in.py --defect_root_dir " + args.defect_root_dir + "\n") f_create_shell.write("rm -rf ./temp_outputs/\n") f_create_shell.write("\n") f_create_shell.close()