Expand description
Code relationships: definitions, references, call graphs Code relationships module for definition/reference tracking and call graphs.
This module provides capabilities for understanding code relationships:
- Find where symbols are defined
- Find all references to a symbol
- Build call graphs for functions/methods
§Architecture
The module uses a hybrid approach:
- Stack-graphs (optional feature): High-precision name resolution for Python, TypeScript, Java, and Ruby (~95% accuracy)
- RepoMap: AST-based extraction with heuristic matching for all languages (~70% accuracy)
§Usage
ⓘ
use project_rag::relations::{HybridRelationsProvider, RelationsProvider};
let provider = HybridRelationsProvider::new()?;
let definitions = provider.extract_definitions(&file_info)?;
let references = provider.extract_references(&file_info, &symbol_index)?;Re-exports§
pub use types::CallEdge;pub use types::CallGraphNode;pub use types::Definition;pub use types::DefinitionResult;pub use types::PrecisionLevel;pub use types::Reference;pub use types::ReferenceKind;pub use types::ReferenceResult;pub use types::SymbolId;pub use types::SymbolInfo;pub use types::SymbolKind;pub use types::Visibility;
Modules§
- repomap
- RepoMap-style code relationship extraction.
- storage
- Storage layer for code relationships.
- types
- Type definitions for code relationships (definitions, references, call graphs).
Structs§
- Hybrid
Relations Provider - Hybrid provider that selects the best available provider per language.
- Relations
Config - Configuration for relations extraction
Traits§
- Relations
Provider - Trait for extracting code relationships from source files.