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

Function build_adg

src/bin/harness.rs:286–315  ·  view source on GitHub ↗
(project: String, kind: &ADGKind, target: &Option<PathBuf>)

Source from the content-addressed store, hash-verified

284}
285
286fn build_adg(project: String, kind: &ADGKind, target: &Option<PathBuf>) -> Result<()> {
287 let deopt = Deopt::new(project)?;
288 match kind {
289 ADGKind::Sparse => {
290 if let Some(program_path) = target {
291 let ast = Executor::extract_ast(program_path, vec![], &deopt)?;
292 let cfg = CFGBuilder::build_cfg(ast)?;
293 let adg = ADGBuilder::new().sparse_build(cfg)?;
294 let save_path: PathBuf = [deopt.get_library_adg_dir()?, "sparse.adg".into()]
295 .iter()
296 .collect();
297 adg.dump_to_file(&save_path, true)?;
298 }
299 }
300 ADGKind::Dense => {
301 let mut observer = Observer::new(&deopt);
302 let seed_dir = if let Some(dir) = target {
303 dir.clone()
304 } else {
305 deopt.get_library_seed_dir()?
306 };
307 for entry in std::fs::read_dir(seed_dir)? {
308 let seed = entry?.path();
309 observer.add_program_to_adg(&seed)?;
310 }
311 observer.save_coalesced_adg()?;
312 }
313 }
314 Ok(())
315}
316
317fn constraint_infer(project: String) -> Result<()> {
318 let deopt = Deopt::new(project)?;

Callers 1

mainFunction · 0.85

Calls 6

sparse_buildMethod · 0.80
get_library_adg_dirMethod · 0.80
get_library_seed_dirMethod · 0.80
add_program_to_adgMethod · 0.80
save_coalesced_adgMethod · 0.80
dump_to_fileMethod · 0.45

Tested by

no test coverage detected