| name | rust-lint |
|---|---|
| description | Rust code quality check - Use Clippy and Rustfmt to ensure Rust code standards and performance optimization |
Use Rust official toolchain to check code quality:
- Clippy: Smart code checks (450+ rules)
- Rustfmt: Code formatting
| Tool | Min Version | Installation |
|---|---|---|
| Rust | 1.70+ | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
| Clippy | - | rustup component add clippy |
| Rustfmt | - | rustup component add rustfmt |
Run Clippy:
.\.agent\skills\rust-lint\scripts\lint.ps1Auto-fix:
.\.agent\skills\rust-lint\scripts\lint.ps1 -FixFormat code:
.\.agent\skills\rust-lint\scripts\format.ps1- β Avoid unnecessary clones
- β Use iterators instead of loops
- β String handling optimization
- β Collection operation efficiency
- β Unused unsafe code
- β Integer overflow detection
- β Null pointer dereference
- β Lifetime issues
- β Pattern matching recommendations
- β Option/Result usage
- β Error handling best practices
- β Trait implementation suggestions
π¦ Rust Lint - Checking project...
warning: unnecessary use of `clone`
--> src/main.rs:15:18
|
15 | let data = items.clone();
| ^^^^^^^^ help: remove this
|
= note: `#[warn(clippy::unnecessary_clone)]` on by default
error: indexing may panic
--> src/lib.rs:42:13
|
42 | let x = arr[5];
| ^^^^^^
|
= help: consider using `.get()` or `.get_mut()`
π Results:
β Errors: 1
β οΈ Warnings: 3
Create clippy.toml:
cognitive-complexity-threshold = 30
too-many-arguments-threshold = 8
disallowed-methods = [
"std::env::set_var", # Unsafe environment variable setting
]
# Allowed lints
allow = [
"clippy::module_name_repetitions",
]
# Warning level lints
warn = [
"clippy::pedantic",
"clippy::nursery",
]
# Denied lints
deny = [
"clippy::unwrap_used",
"clippy::expect_used",
]Create rustfmt.toml:
max_width = 100
indent_style = "Block"
use_small_heuristics = "Default"
imports_granularity = "Crate"