All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- All parsers now track unresolved cross-file function calls
- Unresolved callee names stored in
unresolved_callsnode property for post-processing - Enables proper unused code detection across file boundaries
- Version bumps: TypeScript v0.3.1, Python v0.3.1, Rust v0.1.2, Go v0.1.3, C v0.1.2
- New
ComplexityMetricsstruct for comprehensive complexity analysis ComplexityBuilderfor incremental complexity tracking during AST traversal- Metrics tracked: cyclomatic complexity, branches, loops, logical operators, max nesting depth, exception handlers, early returns
- Letter grading system (A-F) based on industry-standard thresholds
- Integration with
FunctionEntityvia optionalcomplexityfield - 11 unit tests for complexity calculation
- Full AST-based cyclomatic complexity calculation
- Handles: if/elif/else, while, for, with, try/except, match statements
- List comprehension complexity tracking
- Boolean operator analysis (and, or)
- Nesting depth tracking
- 7 new complexity tests
- Full AST-based cyclomatic complexity calculation using tree-sitter
- Handles: if/else, switch/case, ternary expressions, for/while/do loops
- Try/catch exception handling
- Logical operator analysis (&&, ||)
- Nesting depth tracking
- 9 new complexity tests
- Complexity metrics stored as node properties in graph
- Properties: complexity, complexity_grade, complexity_branches, complexity_loops, complexity_logical_ops, complexity_nesting, complexity_exceptions, complexity_early_returns
codegraph-parser-apibumped to v0.2.0 (new complexity module)codegraph-pythonbumped to v0.3.0 (complexity integration)codegraph-typescriptbumped to v0.3.0 (complexity integration)codegraph-gobumped to v0.1.2 (compatibility with new FunctionEntity)codegraph-rustbumped to v0.1.1 (compatibility with new FunctionEntity)- Python builder now uses direct PropertyMap for richer function metadata
- TypeScript mapper includes complexity properties when available
- Migrated to workspace structure with 6 crates
- Unified build system with shared dependencies
- Workspace-level configuration and metadata
- 421+ tests across all crates
CodeParsertrait defining standard parser interface- Unified entity types:
FunctionEntity,ClassEntity,ModuleEntity,TraitEntity - Unified relationship types:
CallRelation,ImportRelation,InheritanceRelation,ImplementationRelation ParserConfigwith resource limits and feature flagsParserMetricsfor tracking parse performanceCodeIRintermediate representation for language-agnostic parsing- Builder patterns for ergonomic entity construction
- Thread-safe design (Send + Sync)
- Comprehensive documentation and examples
- Complete migration to
CodeParsertrait - 111 tests with ~90% test coverage
- Config-based filtering (include_tests, include_private)
- Comprehensive entity extraction (functions, classes, methods, imports)
- Async function support
- Property and decorator tracking
- Backward compatibility with deprecated API
- Full implementation of
CodeParsertrait - 64 tests (40 unit + 24 integration)
- Extract functions, structs, enums, traits, impl blocks
- Individual use statement parsing with full paths
- Support for simple, aliased, grouped, glob, and nested imports
- Visibility tracking (public, private, crate, pub(crate))
- Generic and lifetime parameter extraction
- Method extraction from impl blocks
- Full implementation of
CodeParsertrait - 63 tests (40 unit + 23 integration)
- Support for .ts, .tsx, .js, .jsx files
- JSX/TSX support with file extension detection
- Extract functions, classes, interfaces, methods
- Individual import symbol extraction (named, default, namespace)
- Class method extraction with parameters
- Export tracking (default and named exports)
- Async/await function detection
- Full implementation of
CodeParsertrait - 54 tests (34 unit + 20 integration)
- Extract functions, structs, interfaces, methods
- Individual import extraction from import blocks
- Support for named imports, dot imports, and aliased imports
- Method receiver tracking
- Pointer receiver detection
- Exported/unexported entity tracking
- BREAKING:
Parserstruct deprecated in favor ofPythonParser - BREAKING: Entity types now come from
codegraph-parser-api - BREAKING: Config fields renamed (
skip_tests→include_tests,skip_private→include_private) - Migration path: Use
PythonParser::new()instead ofParser::new() - Old API still available with deprecation warnings
- Workspace total: 421+ tests (from 115)
- codegraph: 39 tests (unchanged, 85% coverage)
- parser-api: 12 tests
- Python: 111 tests (~90% coverage)
- Rust: 64 tests
- TypeScript: 63 tests
- Go: 54 tests
- Added workspace README with all parsers
- Updated ARCHITECTURE.md with completed phases
- Updated MIGRATION_GUIDE.md with completion status
- Added parser-specific usage examples
- Comprehensive API documentation for all parsers
- All clippy warnings across workspace resolved
- Formatting consistency with
cargo fmt - Python parser now respects ParserConfig filtering
- Import extraction provides symbol-level granularity (all parsers)
- TypeScript method extraction from classes
- Edge cases in deeply nested code structures
- Parser metrics tracked across all implementations
- Parallel parsing support in ParserConfig
- Efficient AST traversal in all parsers
- Minimal allocations during parsing
0.1.1 - 2025-11-02
- Persistent graph storage using RocksDB backend
- In-memory storage backend for testing
- Node and Edge operations with property maps
- Batch operations for nodes and edges
- Neighbor queries with directional support (Outgoing, Incoming, Both)
- Thread-safe operations with atomic counters
- Property system with type-safe getters (String, Int, Float, Bool, Lists)
- Support for 8 NodeTypes: CodeFile, Function, Class, Module, Variable, Type, Interface, Generic
- Support for 11 EdgeTypes: Imports, ImportsFrom, Contains, Calls, Invokes, Instantiates, Extends, Implements, Uses, Defines, References
add_file(),add_function(),add_class(),add_method(),add_module()- Create code entitiesadd_function_with_metadata()- Support for visibility, async, test markersadd_call(),add_import()- Create relationships with metadataget_callers(),get_callees()- Query function call relationshipsget_functions_in_file()- List all functions in a fileget_file_dependencies(),get_file_dependents()- File dependency queries
- Fluent query interface with method chaining
- Filters:
node_type(),in_file(),file_pattern(),property(),name_contains(),custom() - Query execution:
execute(),count(),exists() - Query optimization (node_type filter first, then properties, then custom)
- Support for glob patterns in file matching
- Performance: Sub-millisecond queries on 10K node graphs
- DOT format: Graphviz visualization with customizable colors and labels
- JSON format: D3.js-compatible nodes/links format
- CSV format: Separate exports for nodes and edges
- RDF Triples: N-Triples format for semantic web tools
- Size warnings for large graphs (>10K nodes)
- Filtered export support
- Breadth-First Search (BFS) with depth limiting
- Depth-First Search (DFS) with iterative implementation
- Tarjan's Strongly Connected Components (cycle detection)
- Path finding:
find_all_paths()between nodes - Transitive dependency analysis:
transitive_dependencies(),transitive_dependents() - Call chain analysis:
call_chain()between functions - Circular dependency detection:
circular_deps() - All algorithms handle cycles gracefully
- Node lookup: ~7 ns (1000x better than 1ms target)
- Neighbor queries:
- 10 neighbors: ~410 ns
- 100 neighbors: ~4 µs
- 1000 neighbors: ~40 µs
- Batch insert:
- 100 nodes: ~482 µs
- 1000 nodes: ~968 µs
- 10,000 nodes: ~7 ms
- Large graphs: Successfully handles 100K nodes + 500K edges in 3.3s
- 115 total tests (39 lib + 70 integration/unit + 6 doctests)
- 97% test coverage on core modules
- TDD methodology used throughout
- Integration tests for RocksDB persistence, crash recovery, large graphs
- Comprehensive benchmark suite
- No unsafe code (enforced with
#![deny(unsafe_code)]) - All clippy pedantic lints addressed
- Comprehensive API documentation with examples
- Module-level documentation for all modules
basic_usage.rs- Core graph operationscall_graph.rs- Function call analysisdependency_tree.rs- File dependency analysisimpact_analysis.rs- Complex query patternsvisualize.rs- All export formats
- Complete API documentation for all public interfaces
- Architecture overview and design principles
- Quickstart guide with common patterns
- Contributing guidelines