Skip to content

Module Overview

symtrace is a single Rust binary. Each source file handles one part of the pipeline.

ModuleWhat it does
main.rsRuns the pipeline, dispatches work in parallel
cli.rsDefines command-line arguments
git_layer.rsOpens the repo, resolves commits, reads file contents
language.rsMaps file extensions to languages
ast_builder.rsParses files into syntax trees
ast_cache.rsCaches parsed trees in memory and on disk
incremental_parse.rsReuses previous parses for faster re-parsing
node_identity.rsComputes the four fingerprint hashes per node
tree_diff.rsRuns the matching algorithm to classify changes
semantic_similarity.rsScores how similar two matched nodes are
refactor_detection.rsDetects refactor patterns (extract, move, rename)
symbol_tracking.rsTracks symbols across files
commit_classification.rsLabels the commit type (feature, bugfix, etc.)
output.rsRenders CLI or JSON output
types.rsShared data types used across modules
cli.rs -> git_layer.rs -> ast_builder.rs -> node_identity.rs
|
tree_diff.rs
|
refactor_detection.rs
|
symbol_tracking.rs
|
commit_classification.rs
|
output.rs
  • Caching — parsed trees are cached in an in-memory LRU and on disk, so repeated runs are fast.
  • Parallelism — files are processed independently and concurrently.
  • Resource limits — configurable guards prevent runaway parsing on very large or adversarial files.