What this lint catches
clippy::allow_attributes_without_reason flags every #[allow(...)] or #![allow(...)] attribute that does not carry a reason = \"...\" string.
Without a reason, a lint suppression is opaque. A future reader cannot tell:
- whether the suppression is a deliberate, long-lived policy decision
- whether it is a temporary workaround waiting to be removed
- or whether it is an accidental copy-paste that no longer applies
Why it improves code quality
Requiring a reason turns each suppression into self-documenting code:
// Before — opaque
#[allow(clippy::fn_params_excessive_bools)]
// After — explains the tradeoff
#[allow(clippy::fn_params_excessive_bools, reason = \"each bool maps directly to a distinct CLI flag; wrapping them in a flags struct would add indirection without clarity gains at the single call site\")]
This makes it easy to audit suppressions over time ("is this reason still valid?") and to remove them safely when the underlying issue is fixed.
Scope
The codebase currently has 8 #[allow] / #![allow] attributes — all in small, well-understood locations — making this a low-risk, high-signal change.
This issue was opened by the Clippy lint improvements → issue + PR (Rust repos) → Slack routine of moadim.
@tupe12334
What this lint catches
clippy::allow_attributes_without_reasonflags every#[allow(...)]or#![allow(...)]attribute that does not carry areason = \"...\"string.Without a reason, a lint suppression is opaque. A future reader cannot tell:
Why it improves code quality
Requiring a reason turns each suppression into self-documenting code:
This makes it easy to audit suppressions over time ("is this reason still valid?") and to remove them safely when the underlying issue is fixed.
Scope
The codebase currently has 8
#[allow]/#![allow]attributes — all in small, well-understood locations — making this a low-risk, high-signal change.