# woofmt π
**β‘ Blazing-fast Go Linter & Formatter ββ 10-100x faster than traditional tools**
[](https://crates.io/crates/woofmt)
[](https://docs.rs/woofmt)
[](LICENSE)
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](https://github.com/GWinfinity/woofind) β [woolink](https://github.com/GWinfinity/woolink) β [wootype](https://github.com/GWinfinity/wootype) β [woofmt](https://github.com/GWinfinity/woofmt)
π [δΈζζζ‘£](README_CN.md)
---
## π Extreme Performance
### Speed Comparison
| **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
| π **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
```bash
cargo install woofmt
```
### One-line Install
```bash
### Pre-built Binaries
```bash
# 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
```bash
# 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
```bash
# Format current directory
woofmt fmt
# Format with write (in-place)
woofmt fmt --write
# Check if formatted
woofmt fmt --check
```
### Lint
```bash
# Run all rules
woofmt lint
# Run specific rules
woofmt lint --rules "unused,shadow,error"
# Auto-fix issues
woofmt lint --fix
```
---
## π§ Configuration
### Command Line Options
```bash
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
```toml
# .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
```bash
$ 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
| **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](https://github.com/GWinfinity/woofind)**: Symbol search engine
- **[woolink](https://github.com/GWinfinity/woolink)**: Cross-package symbol resolution
- **[wootype](https://github.com/GWinfinity/wootype)**: Type checking engine
---
## π€ Contributing
Contributions welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md).
```bash
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."*