Expand description
Dependency graph builder that coordinates language-specific extractors.
This module provides a unified interface for building dependency graphs
across multiple programming languages. It uses the extractor subsystem
to parse import/dependency statements and constructs a DependencyGraph
representing the file-level and symbol-level dependencies in a codebase.
§Architecture
DependencyGraphBuilder
├─> LanguageDetector (file extension → Language)
├─> RustDependencyExtractor (use statements)
├─> TypeScriptDependencyExtractor (import/require)
├─> PythonDependencyExtractor (import statements)
└─> GoDependencyExtractor (import blocks)§Example Usage
use thread_flow::incremental::dependency_builder::DependencyGraphBuilder;
use thread_flow::incremental::storage::InMemoryStorage;
use std::path::Path;
let storage = Box::new(InMemoryStorage::new());
let mut builder = DependencyGraphBuilder::new(storage);
// Extract dependencies from files
builder.extract_file(Path::new("src/main.rs")).await?;
builder.extract_file(Path::new("src/utils.ts")).await?;
// Access the built graph
let graph = builder.graph();
println!("Found {} files with {} dependencies",
graph.node_count(), graph.edge_count());
// Persist to storage
builder.persist().await?;Structs§
- Dependency
Graph Builder - Coordinates dependency extraction across multiple languages to build a unified dependency graph.
- Language
Detector - Detects programming language from file extension.
Enums§
- Build
Error - Errors that can occur during dependency graph building.
- Language
- Supported programming languages for dependency extraction.