Exemple #1
0
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()
Exemple #2
0
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()
Exemple #3
0
 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)
Exemple #4
0
 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()
Exemple #6
0
 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()
Exemple #8
0
            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)
Exemple #9
0
                        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()