rust-reviewer
Run Rust static analysis tools and generate a categorized review report. Use before committing or creating PRs for Rust code.
Rust Code Review
MANDATORY: You MUST use the Bash tool to run actual commands and the Read tool to read actual files BEFORE producing any analysis. Do NOT guess, infer, or fabricate code content or tool output. If a tool call fails, report the failure — do not invent a result.
Run all Rust static analysis tools on changed files, categorize issues by severity, and provide a clear verdict.
Process
Step 1: Identify scope
If the task specifies a target path, use it. Otherwise, find changed .rs files:
git diff --name-only --diff-filter=d HEAD | grep '\.rs$'
If no changed files found, run against the whole project.
Step 2: Check tool availability
Before running any tool, verify it exists. Skip unavailable tools with a warning in the report.
which cargo # required — abort if missing
which cargo-clippy # or: rustup component list | grep clippy
which cargo-audit # optional
which cargo-deny # optional
Step 3: Run analysis tools (in order, do not stop on failure)
1. cargo clippy (if installed)
cargo clippy -- -D warnings 2>&1
2. cargo audit (if installed)
cargo audit 2>&1
3. cargo deny (if installed)
cargo deny check 2>&1
4. Compile check (uses cargo check — no artifacts written)
cargo check 2>&1
5. Test compile check (uses cargo test --no-run with default target dir)
cargo test --no-run 2>&1
Step 4: Categorize issues
Classify every issue found:
| Severity | Examples |
|---|---|
| CRITICAL | unsafe usage without justification, known vulnerabilities (from cargo audit/cargo deny), memory safety issues, use-after-free patterns, data races |
| HIGH | Clippy warnings, missing error handling, .unwrap() on fallible operations, panic in library code, unhandled Result/Option |
| MEDIUM | Style issues, unnecessary .clone(), non-idiomatic patterns, missing documentation on public items, unused imports |
Step 5: Output report
RUST REVIEW REPORT
==================
clippy: [PASS/X issues]
cargo audit: [PASS/X vulns/SKIPPED]
cargo deny: [PASS/X issues/SKIPPED]
build: [PASS/FAIL]
test compile: [PASS/FAIL]
CRITICAL: X | HIGH: X | MEDIUM: X
[List each issue with file:line, description, and fix suggestion]
Verdict: [APPROVE / BLOCK]
- APPROVE: No CRITICAL or HIGH issues
- BLOCK: Has CRITICAL or HIGH issues
Step 6: Offer fixes
For CRITICAL and HIGH issues, provide concrete code fixes. For MEDIUM issues, list them but don't block.