Sweet is a blazing-fast code health analyzer designed to keep project architectures lean and sustainable. It identifies technical debt, tangled dependencies, and complex logic patterns.
🍬 Metrics
| Status | Meaning | Action |
|---|---|---|
| Sweet 🍭 | Balanced, cohesive, and easy to maintain. | Keep it up! |
| Bitter 🍋 | Overly complex, high coupling, or high repetition. | Refactor recommended. |
🍬 Features
- Blazing Fast: Process thousands of files in milliseconds (e.g., self-analysis in <10ms).
- Hierarchical Config: Support for multiple
.swtrcfiles to define specific rules for different subdirectories. - Global Inspection: Detect code duplication across the entire project with detailed reporting.
- Quality Guard: Built-in support for git hooks to prevent "Bitter" code from being pushed.
🍭 Supported Languages
| Language | Status | Extension |
|---|---|---|
| Rust | ✅ | .rs |
| Python | ✅ | .py |
| JavaScript | ✅ | .js, .mjs, .cjs |
| TypeScript | ✅ | .ts, .tsx |
| Java | ✅ | .java |
| C# | ✅ | .cs |
| GDScript | ✅ | .gd |
| Go | ⏳ Planned | .go |
Don't see your favorite language? Sweet is designed to be extensible. If you want to add support for a new language (like Go, C++, or Swift), we’d love your help!
Check out our Contributing Guide to see how easy it is to implement a new language provider.
🍬 Installation
Click here to get into the releases page!
You can also install sweet from crates.io
Compiling by yourself
- Clone the project
git clone https://github.com/SirCesarium/sweet.git. - Build using
cargo:cargo build --release. - Check the
target/release/folder.
📖 Usage
Copy-Paste Inspector
Show exact code fragments repeated across different files:
Strip Comments
AI Agents and LLMs often generate verbose, redundant comments that clutter your codebase. Use the --uncomment flag to strip the noise and reclaim your screen real estate for what matters: the logic.
[!TIP] By default,
Sweetpreserves your documentation comments (e.g.,//!,///, or/** */). Use the--aggressiveflag if you want a truly blank slate.
# Clean a single file while keeping documentation
# Full cleanup (removes everything including docs)
🔌 Power User Integration
Sweet follows the Unix philosophy. It plays perfectly with the standard Rust toolbelt (fd, rg) to handle massive refactors in seconds.
With fd (Fast Find):
Strip comments from every Rust file in your project at once.
With ripgrep (rg):
Target only the files that contain a specific "Bitter" pattern or AI-generated signature.
|
🏗️ CI/CD Integration
If you are using GitHub Actions, you don't need to manually install Sweet. We've built Refinery-RS, a surgical quality gate and build pipeline for Rust projects.
Refinery-RS CI
Integrate Sweet with clippy and rustfmt in one single step:
jobs:
quality-gate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: sircesarium/refinery-rs/ci@main
with:
enable-sweet: true # Runs 'swt' maintainability analysis
enable-clippy: true # Runs standard Rust lints
enable-fmt: true # Ensures consistent formatting
Why use Refinery?
- Zero Setup: No need to
cargo install swtin every CI run; Refinery handles the caching and environment for you. - Fail-Fast: Automatically blocks "Bitter" code from being merged.
- One-Stop Shop: If you need to ship, use the same suite to build multi-target binaries and push Docker images to GHCR.
⚙️ Configuration
Sweet resolves .swtrc files hierarchically.
🤝 Contributing
Contributions are welcome! Whether it's adding support for a new language, fixing a bug, or improving the documentation, please check our Contributing Guide to get started.
📜 License
Licensed under the MIT License.