| Crates.io | oxidescan |
| lib.rs | oxidescan |
| version | 1.0.0 |
| created_at | 2025-12-06 15:08:12.744037+00 |
| updated_at | 2025-12-06 15:08:12.744037+00 |
| description | A fast, human-friendly Rust code health checker that runs in seconds and tells you what’s risky, what’s slow, and what’s messy—so you can ship with confidence. |
| homepage | |
| repository | https://github.com/ArshErgon/ |
| max_upload_size | |
| id | 1970325 |
| size | 37,062 |
A fast, educational Rust linter that helps you ship confident, production-ready code.
cargo oxidescan scans your Rust codebase for high-risk patterns, performance pitfalls, and maintainability anti-patterns—with clear explanations, real-world context, and actionable fixes.
Inspired by real incidents like the Cloudflare Nov 2025 outage (caused by a .unwrap() on an oversized config file), cargo oxidescan doesn’t just report issues—it teaches you why they matter.
.unwrap(), .expect(), todo!(), unsafe, and more.clone(), println! in libs, and String over &str--explain mode: Deep-dive into any rule (like rustc --explain)cargo install oxidescan
git clone https://github.com/your-username/oxidescan
cd oxidescan
cargo install --path .
cargo oxidescan # scans ./src
cargo oxidescan path/to/code
cargo oxidescan --explain unwrap
cargo oxidescan --explain clone
📊 Health Score: 62/100
⚠️ Safety Warnings
• Found 2 uses of `.unwrap()` — may panic if value is `None` or `Err`.
Locations:
• src/main.rs:47
• src/main.rs:56
💡 Use `?`, `match`, or `unwrap_or()` instead.
📚 Real-world impact: A `.unwrap()` in Cloudflare’s Bot Management system caused a [global outage on 18 Nov 2025](https://blog.cloudflare.com/18-november-2025-outage/).
| Category | Pattern | Why It Matters |
|---|---|---|
| Safety | .unwrap(), .expect() |
Can panic → outages (e.g., Cloudflare 2025) |
todo!(), unimplemented!() |
Accidental debug code shipped to production | |
unsafe blocks |
Bypasses Rust’s memory safety guarantees | |
| Performance | .clone() |
Causes unnecessary heap allocations |
println! inside libraries |
Unconfigurable I/O → log spam | |
String where &str is enough |
Avoidable heap allocation | |
| Maintainability | Deep nesting (> 4 levels) | Hard to read, test, and maintain |
“Build features instead of debugging panics.”