MCPcopy Create free account
hub / github.com/FuzzAnything/PromptFuzz / collect_accumulation_coverage

Function collect_accumulation_coverage

src/bin/evaluate.rs:134–169  ·  view source on GitHub ↗
(deopt: &Deopt, is_rand_bench: bool)

Source from the content-addressed store, hash-verified

132}
133
134fn collect_accumulation_coverage(deopt: &Deopt, is_rand_bench: bool) -> Result<()> {
135 let succ_seed_dir = deopt.get_library_succ_seed_dir()?;
136 let succ_seeds = prompt_fuzz::deopt::utils::read_sort_dir(&succ_seed_dir)?;
137 let mut last_seed_id = 0;
138 let mut last_seed_coverage = 0;
139 let mut counter = BranchCounter::new(deopt);
140 counter.init()?;
141
142 let mut acc_coverage = Vec::new();
143 for seed in succ_seeds.iter() {
144 let program = Program::load_from_path(seed)?;
145 counter.push(program.id)?;
146 let covered_branches = counter.count_branch()?;
147 log::info!("seed: {seed:?}, covered_branches: {covered_branches}");
148 let mut should_infill = program.id - last_seed_id;
149 while should_infill > 1 {
150 acc_coverage.push(last_seed_coverage);
151 should_infill -= 1;
152 }
153 acc_coverage.push(covered_branches);
154 last_seed_id = program.id;
155 last_seed_coverage = covered_branches;
156 }
157 let save_file = get_acc_coverage_save_file(deopt)?;
158 let bench_file = if is_rand_bench {
159 get_acc_coverage_rand_bench_file(deopt)?
160 } else {
161 get_acc_coverage_bench_file(deopt)?
162 };
163
164 let dump_str = serde_json::to_string(&acc_coverage)?;
165 std::fs::write(save_file, &dump_str)?;
166 std::fs::write(&bench_file, dump_str)?;
167 log::info!("accumulation coverage is saved to: {bench_file:?}");
168 Ok(())
169}
170
171fn plot_acc_coverage(deopt: &Deopt) -> Result<()> {
172 let acc_file = get_acc_coverage_save_file(deopt)?;

Callers 1

coverageFunction · 0.85

Calls 8

read_sort_dirFunction · 0.85
count_branchMethod · 0.80
initMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected