| 94 | |
| 95 | |
| 96 | def analyze_seed_statistics(project_name): |
| 97 | project_output_dir = f"{OTUPUT_DIR}/{project_name}" |
| 98 | seeds_dir = os.path.join(project_output_dir, "seeds") |
| 99 | succ_seeds_dir = os.path.join(project_output_dir, "succ_seeds") |
| 100 | error_seeds_dir = os.path.join(project_output_dir, "error_seeds") |
| 101 | execute_error_seeds_dir = os.path.join(error_seeds_dir, "execute") |
| 102 | fuzzer_error_seeds_dir = os.path.join(error_seeds_dir, "fuzzer") |
| 103 | hang_error_seeds_dir = os.path.join(error_seeds_dir, "hang") |
| 104 | syntax_error_seeds_dir = os.path.join(error_seeds_dir, "syntax") |
| 105 | |
| 106 | num_seeds = len(os.listdir(seeds_dir)) if os.path.exists(seeds_dir) else 0 |
| 107 | num_succ_seeds = len(os.listdir(succ_seeds_dir)) if os.path.exists(succ_seeds_dir) else 0 |
| 108 | num_execute_error_seeds = len(os.listdir(execute_error_seeds_dir)) if os.path.exists(execute_error_seeds_dir) else 0 |
| 109 | num_fuzzer_error_seeds = len(os.listdir(fuzzer_error_seeds_dir)) if os.path.exists(fuzzer_error_seeds_dir) else 0 |
| 110 | num_hang_error_seeds = len(os.listdir(hang_error_seeds_dir)) if os.path.exists(hang_error_seeds_dir) else 0 |
| 111 | num_syntax_error_seeds = len(os.listdir(syntax_error_seeds_dir)) if os.path.exists(syntax_error_seeds_dir) else 0 |
| 112 | |
| 113 | total_harnesses = num_succ_seeds + num_execute_error_seeds + num_fuzzer_error_seeds + num_hang_error_seeds + num_syntax_error_seeds |
| 114 | |
| 115 | return { |
| 116 | "Total harnesses": total_harnesses, |
| 117 | "Unique seeds": num_seeds, |
| 118 | "Successful seeds": num_succ_seeds, |
| 119 | "Execution error seeds": num_execute_error_seeds, |
| 120 | "Fuzzer error seeds": num_fuzzer_error_seeds, |
| 121 | "Hang error seeds": num_hang_error_seeds, |
| 122 | "Syntax error seeds": num_syntax_error_seeds |
| 123 | } |
| 124 | |
| 125 | def analyze_log_directory(directory_path): |
| 126 | grand_total_prompt = 0 |