clippy-advanced

SKILL.md

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

For detailed configuration examples, CI integration, IDE setup, and best practices, see REFERENCE.md.

Weekly Installs
68
GitHub Stars
13
First Seen
Jan 29, 2026
Installed on
opencode66
github-copilot66
codex66
gemini-cli66
cline64
cursor64