| Crates.io | scribe-analyzer |
| lib.rs | scribe-analyzer |
| version | 0.5.0 |
| created_at | 2025-09-13 14:53:33.217082+00 |
| updated_at | 2025-09-19 03:50:14.581372+00 |
| description | Advanced code analysis and repository exploration library with AI-powered insights |
| homepage | https://github.com/sibyllinesoft/scribe |
| repository | https://github.com/sibyllinesoft/scribe |
| max_upload_size | |
| id | 1837754 |
| size | 869,086 |
Scribe is a comprehensive Rust library for code analysis, repository exploration, and intelligent file processing. It provides powerful tools for understanding codebases through heuristic scoring, graph analysis, and AI-powered insights.
Add this to your Cargo.toml:
[dependencies]
scribe = "0.1.0"
Scribe uses feature flags to allow selective compilation:
# Full installation (default)
scribe = "0.1.0"
# Minimal installation
scribe = { version = "0.1.0", default-features = false, features = ["core"] }
# Fast file operations only
scribe = { version = "0.1.0", default-features = false, features = ["fast"] }
# Analysis without graph features
scribe = { version = "0.1.0", default-features = false, features = ["core", "analysis", "scanner"] }
| Feature | Description | Dependencies |
|---|---|---|
default |
All features enabled | core, analysis, graph, scanner, patterns, selection |
core |
Essential types and utilities | None |
analysis |
Heuristic scoring and metrics | core |
graph |
PageRank centrality analysis | core, analysis |
scanner |
File system scanning | core |
patterns |
Pattern matching (glob, gitignore) | core |
selection |
Code selection and bundling | core, analysis, graph |
| Group | Features | Use Case |
|---|---|---|
minimal |
core |
Basic types and utilities only |
fast |
core, scanner, patterns |
Quick file operations |
comprehensive |
All features | Complete analysis capabilities |
use scribe::prelude::*;
use std::path::Path;
#[tokio::main]
async fn main() -> Result<()> {
// Analyze a repository with default settings
let config = Config::default();
let analysis = analyze_repository(".", &config).await?;
// Get the most important files
println!("Top 10 most important files:");
for (file, score) in analysis.top_files(10) {
println!(" {}: {:.3}", file, score);
}
// Display summary
println!("\n{}", analysis.summary());
Ok(())
}
// Using only core and scanner features
use scribe::core::{Config, Result};
use scribe::scanner::{Scanner, ScanOptions};
#[tokio::main]
async fn main() -> Result<()> {
let scanner = Scanner::new();
let options = ScanOptions::default()
.with_git_integration(true)
.with_parallel_processing(true);
let files = scanner.scan(".", options).await?;
println!("Found {} files", files.len());
Ok(())
}
use scribe::patterns::presets;
#[tokio::main]
async fn main() -> scribe::Result<()> {
// Use preset patterns for common file types
let mut source_matcher = presets::source_code()?;
let mut doc_matcher = presets::documentation()?;
if source_matcher.should_process("src/main.rs")? {
println!("Found source file!");
}
if doc_matcher.should_process("README.md")? {
println!("Found documentation!");
}
Ok(())
}
use scribe::graph::PageRankAnalysis;
#[tokio::main]
async fn main() -> scribe::Result<()> {
let analysis = PageRankAnalysis::for_code_analysis()?;
// Compute centrality for scan results
// let centrality_results = analysis.compute_centrality(&scan_results)?;
// let top_files = centrality_results.top_files_by_centrality(10);
Ok(())
}
Scribe is built with a modular architecture where each crate provides specific functionality:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β scribe β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β β scribe-core β βscribe-scannerβ β scribe-patterns β β
β β (types, β β(file system β β (glob, gitignore, β β
β β traits, β β traversal, β β pattern matching) β β
β β utilities) β β git support) β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
β βscribe-analysisβ βscribe-graph β β scribe-selection β β
β β (heuristic β β (PageRank β β (intelligent bundling, β β
β β scoring, β β centrality, β β context extraction, β β
β β code metrics)β β dependency β β relevance scoring) β β
β β β β analysis) β β β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
scribe-core: Foundation types, traits, configuration, and utilitiesscribe-scanner: High-performance file system traversal with git integrationscribe-patterns: Flexible pattern matching with glob and gitignore supportscribe-analysis: Heuristic scoring algorithms and code metricsscribe-graph: PageRank centrality and dependency graph analysisscribe-selection: Intelligent code selection and context extractionThe repository includes several examples demonstrating different usage patterns:
# Full analysis example
cargo run --example basic_usage -- /path/to/repository
# Minimal features example
cargo run --example selective_features --no-default-features --features="core,scanner" -- /path/to/directory
basic_usage.rs: Complete repository analysis with all featuresselective_features.rs: Minimal usage with core and scanner onlyScribe is designed for high performance:
git ls-files when availableRun benchmarks to see performance characteristics:
cargo bench
Performance characteristics on typical repositories:
# Build all features
cargo build
# Build with specific features
cargo build --no-default-features --features="core,scanner"
# Build for release
cargo build --release
# Run all tests
cargo test
# Test specific features
cargo test --no-default-features --features="core,analysis"
# Run tests with output
cargo test -- --nocapture
# Generate documentation
cargo doc --open
# Generate documentation for all features
cargo doc --all-features --open
This project is licensed under either of
at your option.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.