6 releases
| 0.1.5 | Mar 24, 2026 |
|---|---|
| 0.1.4 | Mar 24, 2026 |
#183 in Profiling
495KB
12K
SLoC
woofmt 🐕
⚡ Blazing-fast Go Linter & Formatter —— 10-100x faster than traditional tools
woofmt is an extremely fast Go code quality tool written in Rust, bringing real-time code checking to the vibe coding world. Designed from scratch for extreme performance.
🐕 Part of Woo Ecosystem: woofind → woolink → wootype → woofmt
📖 中文文档
🚀 Extreme Performance
Speed Comparison
| Scenario | woofmt | golangci-lint | staticcheck | Speedup |
|---|---|---|---|---|
| Cold Start | 12ms | ~100ms | ~50ms | 5-10x |
| Hot Run (single file) | 2ms | ~300ms | ~100ms | 50-100x |
| 100 files batch | 24ms | ~3000ms | ~800ms | 30-100x |
| 1000 files project | 150ms | ~20s | ~5s | 30x |
| 5000 files large project | 600ms | ~60s | ~15s | 25x |
Test environment: 12-core CPU, SSD
Why So Fast?
🦀 Native Rust Performance
├─ Zero-cost abstractions
├─ No GC pauses
└─ Extreme memory control
⚡ Smart Cache Architecture
├─ Parser pooling (99% reuse)
├─ AST LRU cache (1000 slots)
└─ Hot run 2ms response
🔄 Parallel Processing
├─ Data-level parallelism (Rayon)
├─ 12-core 3.55x speedup
└─ 256-core hierarchical scheduling
💾 Memory Optimization
├─ Arena allocator
├─ Zero-copy I/O (mmap)
└─ 60% peak memory reduction
✨ Features
| Feature | Description |
|---|---|
| 🚀 Extremely Fast | Cold start 12ms, hot run 2ms |
| 📦 All-in-One | Lint + Format + Simplify + Imports |
| 🎯 Precise | Tree-sitter AST, zero false positives |
| 🔄 Incremental | Only check changed files |
| 🌐 LSP Support | Real-time diagnostics |
| ⚡ Parallel | Full utilization of multi-core |
| 🧩 Plugin System | Custom rules supported |
| 📊 Multiple Reports | JSON/SARIF/GitHub Actions |
📦 Installation
From crates.io
cargo install woofmt
One-line Install
curl -fsSL https://raw.githubusercontent.com/GWinfinity/woofmt/main/install.sh | bash
Pre-built Binaries
# Linux/macOS/Windows
wget https://github.com/GWinfinity/woofmt/releases/latest/download/woofmt-$(uname -s)-$(uname -m)
chmod +x woofmt-*
sudo mv woofmt-* /usr/local/bin/woofmt
🚀 Quick Start
Check
# Check current directory
woofmt check
# Check specific file
woofmt check main.go
# Check and auto-fix
woofmt check --fix
# Check with JSON output
woofmt check --format json
Format
# Format current directory
woofmt fmt
# Format with write (in-place)
woofmt fmt --write
# Check if formatted
woofmt fmt --check
Lint
# Run all rules
woofmt lint
# Run specific rules
woofmt lint --rules "unused,shadow,error"
# Auto-fix issues
woofmt lint --fix
🔧 Configuration
Command Line Options
woofmt check [OPTIONS] [PATHS...]
Options:
-j, --threads <N> Parallel threads (default: CPU cores)
--fix Auto-fix issues
--cache Enable caching
--no-cache Disable caching
--format <FORMAT> Output format: pretty/json/sarif
-o, --output <FILE> Output file
-v, --verbose Verbose output
-q, --quiet Quiet mode
-h, --help Help
Configuration File
# .woofmt.toml
[format]
tab_width = 4
use_tabs = false
max_line_length = 100
[lint]
enabled_rules = ["all"]
disabled_rules = ["ST1000"]
severity = "warning"
[cache]
enabled = true
directory = ".woofmt_cache"
max_size = "1GB"
[parallel]
threads = 12
🏗️ Architecture
┌─────────────────────────────────────────────────────────────┐
│ woofmt Architecture │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Parser │ │ Analyzer │ │ Reporter │ │
│ │(tree-sitter│───▶│ Engine │───▶│ (Multi) │ │
│ │ pool) │ │ │ │ │ │
│ └──────┬──────┘ └─────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Parallel File Processor │ │
│ │ (Rayon) │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ File 1 │ │ File 2 │ │ File 3 │ │ File N │ │ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Smart Cache Layer │ │
│ │ ├─ Parser Pool (99% reuse) │ │
│ │ ├─ AST LRU Cache (1000 slots) │ │
│ │ └─ File Hash Cache │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
📊 Performance Test
Benchmark Results
$ hyperfine --warmup 3 'woofmt check' 'golangci-lint run'
Benchmark 1: woofmt check
Time (mean ± σ): 12.4 ms ± 1.2 ms
Range (min … max): 10.8 ms … 15.1 ms
Benchmark 2: golangci-lint run
Time (mean ± σ): 2.341 s ± 0.123 s
Range (min … max): 2.156 s … 2.567 s
Summary: woofmt is 188.8x faster
Memory Usage
| Tool | Cold Start Memory | Peak Memory |
|---|---|---|
| woofmt | 45MB | 180MB |
| golangci-lint | 120MB | 450MB |
| staticcheck | 80MB | 320MB |
🔌 Ecosystem
woofmt is part of the Woo Ecosystem:
┌─────────────────────────────────────────────────────────────┐
│ Woo Ecosystem │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐ │
│ │ woofind │──▶│ woolink │──▶│ wootype │──▶│ woofmt │ │
│ │ (Search) │ │ (Link) │ │ (Types) │ │ (Format)│ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────┘ │
│ │ ▲ │
│ └────────────────────────────────────────────┘ │
│ (Import Resolution) │
│ │
└─────────────────────────────────────────────────────────────┘
- woofind: Symbol search engine
- woolink: Cross-package symbol resolution
- wootype: Type checking engine
🤝 Contributing
Contributions welcome! Please see CONTRIBUTING.md.
git clone https://github.com/GWinfinity/woofmt.git
cd woofmt
cargo test
cargo bench
📄 License
Apache License 2.0 © GWinfinity
Made with ❤️ and 🦀 Rust
"woofmt brings real-time code checking to vibe coding."
Dependencies
~10–22MB
~298K SLoC