Crawler is a versatile, multi-language static analysis tool designed to map and visualize dependencies across different programming languages and project structures. It provides comprehensive insights into code relationships at various levels of granularity.
-
Support for multiple programming languages:
- Rust (.rs)
- C/C++ (.c, .cpp, .h) (todo)
- JavaScript (.js) (todo)
- Go (.go) (todo)
- Python (.py) (todo)
-
Dependency Mapping Levels:
- File and directory dependencies
- Module imports
- Class relationships
- Function dependencies
- Parameter-level connections
-
Flexible Crawling Options:
- Crawl current working directory by default
- Specify custom entry point directory
- Analyze library/dependency directories
- Configurable depth and scope of analysis
git clone https://github.com/vaziolabs/crawler.git
cd crawler
make
# Crawl current directory
./crawler
# Crawl specific directory
./crawler /path/to/project
# Crawl with library directory
./crawler /path/to/project -l /path/to/libraries
Usage: crawler [OPTIONS] [ENTRY_POINT]
Options:
-l, --library DIR Specify additional library directory to search for dependencies
-d, --depth NUM Set maximum crawl depth (default: unlimited)
-o, --output FORMAT Output format
-v, --verbose Enable verbose output
--help Show this help message
terminal
: Human-readable console output (default)json
: Structured JSON for further analysis (todo)graphviz
: Graph visualization format (not implemented)
Create a .depcrawler.conf
in your project root to customize:
- Ignored directories
- Language-specific parsing rules
- Custom dependency filters
Example configuration:
[global]
ignore_dirs = ["node_modules", "target", "build"]
[rust]
parse_private_modules = true
[python]
follow_imports = true
./crawler ~/projects/my-rust-project
./crawler ~/projects/complex-app -l ~/projects/shared-libraries -d 3 -o json
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Static analysis only (no runtime dependency tracking)
- Parsing complexity varies by language
- Large projects may require significant memory
Distributed under the Ancillary License. See LICENSE
for more information.
Your Name - dev@vaziolabs.com
Project Link: https://github.com/vaziolabs/crawler