clippy-advanced - Advanced Clippy Configuration
Advanced Clippy configuration for comprehensive Rust linting, including custom rules, lint categories, disallowed methods, and IDE integration.
When to Use This Skill
Use this skill when... Use another tool instead when...
Configuring Clippy lint rules Formatting code (use rustfmt)
Setting up CI linting for Rust Building/compiling (use cargo build)
Customizing clippy.toml Running tests (use cargo test)
Enforcing code standards Managing dependencies (use cargo add)
Installation
Clippy is included with rustup
rustup component add clippy
Verify installation
cargo clippy --version
Update clippy with rust toolchain
rustup update
Basic Usage
Run clippy on current project
cargo clippy
Run on all targets (lib, bins, tests, examples, benches)
cargo clippy --all-targets
Run with all features enabled
cargo clippy --all-features
Run on workspace
cargo clippy --workspace --all-targets --all-features
Show detailed lint explanations
cargo clippy -- -W clippy::all -A clippy::pedantic
Treat warnings as errors
cargo clippy -- -D warnings
Lint Categories
Category Purpose Default
clippy::correctness
Likely bugs Deny
clippy::complexity
Overly complex code Warn
clippy::perf
Performance issues Warn
clippy::style
Code style Warn
clippy::suspicious
Code that looks wrong Warn
clippy::pedantic
Opinionated style Off
clippy::restriction
Opt-in constraints Off
clippy::nursery
Experimental Off
clippy::cargo
Cargo.toml issues Off
Recommended Cargo.toml Configuration
[workspace.lints.clippy]
Deny correctness issues (likely bugs)
correctness = "deny" complexity = "warn" perf = "warn" style = "warn" suspicious = "warn"
Enable pedantic but allow some noisy lints
pedantic = "warn" must_use_candidate = "allow" missing_errors_doc = "allow"
Enable some restriction lints selectively
clone_on_ref_ptr = "warn" dbg_macro = "warn" print_stdout = "warn" todo = "warn" unimplemented = "warn" unwrap_used = "warn"
Enable nursery lints (experimental)
use_self = "warn"
clippy.toml Essential Settings
Create clippy.toml in project root for thresholds and disallowed items:
cognitive-complexity-threshold = 15 too-many-lines-threshold = 100 too-many-arguments-threshold = 5
disallowed-methods = [ { path = "std::env::var", reason = "Use std::env::var_os for better Unicode handling" }, { path = "std::process::exit", reason = "Use Result propagation instead" }, ]
disallowed-names = ["foo", "bar", "baz"]
Lint Suppression
// Function-level #[allow(clippy::too_many_arguments)] fn complex_function(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) {}
// Module-level (src/lib.rs) #![warn(clippy::all)] #![warn(clippy::pedantic)] #![deny(clippy::unwrap_used)] #![allow(clippy::module_name_repetitions)]
// Inline #[allow(clippy::cast_possible_truncation)] let x = value as u8;
Agentic Optimizations
Context Command
CI strict cargo clippy --workspace --all-targets -- -D warnings
JSON output cargo clippy --message-format=json
Compact errors cargo clippy --message-format=short
Quick check cargo clippy --message-format=short -- -D warnings
Pedantic check cargo clippy -- -W clippy::pedantic -D clippy::correctness
Quick Reference
Command-Line Flags
Flag Description
--all-targets
Check lib, bins, tests, examples, benches
--all-features
Enable all features
--workspace
Check entire workspace
--message-format=json
JSON output for tooling
--message-format=short
Compact error format
-- -D warnings
Treat warnings as errors
-- -W clippy::pedantic
Enable pedantic lints
-- -A clippy::lint_name
Allow specific lint
Lint Levels
Level Attribute Effect
Allow #[allow(...)]
Suppress lint
Warn #[warn(...)]
Show warning
Deny #[deny(...)]
Compile error
References
-
Clippy documentation
-
Lint list
-
Configuration options
-
rust-analyzer integration
For detailed configuration examples, CI integration, IDE setup, and best practices, see REFERENCE.md.