| Crates.io | scancode-rust |
| lib.rs | scancode-rust |
| version | 0.0.5 |
| created_at | 2025-03-21 15:38:10.343201+00 |
| updated_at | 2026-01-25 11:09:05.893841+00 |
| description | A Rust-based tool for scanning and analyzing code. |
| homepage | |
| repository | https://github.com/mstykow/scancode-rust |
| max_upload_size | |
| id | 1600634 |
| size | 21,344,582 |
A high-performance code scanning tool written in Rust that detects licenses, copyrights, and other relevant metadata in source code.
scancode-rust is designed to be a faster alternative to the Python-based ScanCode Toolkit, aiming to produce compatible output formats while delivering significantly improved performance. This tool currently scans codebases to identify:
More ScanCode features coming soon!
cargo install scancode-rust
Download the appropriate binary for your platform from the GitHub Releases page:
scancode-rust-x86_64-unknown-linux-gnu.tar.gzscancode-rust-aarch64-unknown-linux-gnu.tar.gzscancode-rust-x86_64-apple-darwin.tar.gzscancode-rust-aarch64-apple-darwin.tar.gzscancode-rust-x86_64-pc-windows-msvc.zipExtract and place the binary in your system's PATH:
# Example for Linux/macOS
tar xzf scancode-rust-*.tar.gz
sudo mv scancode-rust /usr/local/bin/
git clone https://github.com/yourusername/scancode-rust.git
cd scancode-rust
./setup.sh # Initialize the submodule and configure sparse checkout
cargo build --release
The compiled binary will be available at target/release/scancode-rust.
scancode-rust [OPTIONS] <DIR_PATH> --output-file <OUTPUT_FILE>
Options:
-o, --output-file <OUTPUT_FILE> Output JSON file path
-d, --max-depth <MAX_DEPTH> Maximum directory depth to scan [default: 50]
-e, --exclude <EXCLUDE>... Glob patterns to exclude from scanning
-h, --help Print help
-V, --version Print version
scancode-rust ~/projects/my-codebase -o scan-results.json --exclude "*.git*" "target/*" "node_modules/*"
scancode-rust is designed to be significantly faster than the Python-based ScanCode Toolkit, especially for large codebases. Performance improvements come from:
The tool produces JSON output compatible with ScanCode Toolkit, including:
Contributions are welcome! Please feel free to submit a Pull Request.
To contribute to scancode-rust, follow these steps to set up the repository for local development:
Install Rust
Ensure you have Rust installed on your system. You can install it using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Clone the Repository
Clone the scancode-rust repository to your local machine:
git clone https://github.com/mstykow/scancode-rust.git
cd scancode-rust
Initialize the License Submodule
Use the following script to initialize the submodule and configure sparse checkout:
./setup.sh
Install Dependencies
Install the required Rust dependencies using cargo:
cargo build
Run Tests
Run the test suite to ensure everything is working correctly:
cargo test
Set Up Pre-commit Hooks
This repository uses pre-commit to run checks before each commit:
# Using pip
pip install pre-commit
# Or using brew on macOS
brew install pre-commit
# Install the hooks
pre-commit install
Start Developing
You can now make changes and test them locally. Use cargo run to execute the tool:
cargo run -- [OPTIONS] <DIR_PATH>
Releases are automated using cargo-release and GitHub Actions.
One-time setup:
Install cargo-release CLI tool:
cargo install cargo-release
Authenticate with crates.io (one-time only):
cargo login
Enter your crates.io API token when prompted. This is stored in ~/.cargo/credentials.toml and persists across sessions.
Use the release.sh script:
# Dry-run first (recommended)
./release.sh patch
# Then execute the actual release
./release.sh patch --execute
Available release types:
patch: Increments the patch version (0.0.4 → 0.0.5)minor: Increments the minor version (0.0.4 → 0.1.0)major: Increments the major version (0.0.4 → 1.0.0)What happens automatically:
cargo-release updates the version in Cargo.toml and Cargo.lockchore: release vX.Y.ZvX.Y.ZNote: The release script ensures every release ships with the latest SPDX license definitions. It also handles a sparse checkout workaround for
cargo-release.
Monitor the GitHub Actions workflow to verify completion.
This tool uses the SPDX License List Data for license detection. The license data is:
resources/licenses/ (sparse checkout of json/details/ only)include_dir! macro (see src/main.rs)This means:
For Releases: The release.sh script automatically updates the license data to the latest version before publishing. No manual action needed.
For Development:
To initialize or update to the latest SPDX license definitions:
./setup.sh # Initialize/update license data to latest
cargo build --release # Rebuild with updated data
The script will show if the license data was updated. If so, commit the change:
git add resources/licenses
git commit -m "chore: update SPDX license data"
The setup.sh script:
--depth=1)json/details/ (saves ~90% disk space)This project is licensed under the Apache License 2.0.