Description
41 lints are not enforced, grouped by reason in [workspace.lints] and explained in docs/lints.md. 38 of them are lints praxis enforces more strictly. The groups: style 10, perf 9, hygiene 7, api 5, complexity 5, attributes 2, docs 1, concurrency 1, test-hygiene 1.
Several are cheap now that the tree compiles clean. The complexity group (too_many_lines, too_many_arguments, cognitive_complexity, type_complexity, struct_excessive_bools) has thresholds already set in clippy.toml at the bar we want, so enforcing them is the only step left. Some are not cheap: unused_qualifications is 130 sites whose suggested fixes overlap and cannot be applied by rustfix, and allow_attributes cannot be satisfied under every feature set because two suppressions depend on #[cfg(feature)]-gated bodies.
The outcome is a decision per lint, not a clean sweep. A lint that stays allowed needs its reason in docs/lints.md, same as the current entries.
Measure per the doc: one lint at a time, on a tree that compiles, since some lints mask each other and a failing crate blocks its dependents from being linted. touch the file first; clippy caches hard enough to report a stale zero.
Acceptance criteria
- Every one of the 41 is either enforced or has a current reason recorded.
clippy.toml thresholds that are set but inert become live, or the values are revised with a reason.
- Counts in
docs/lints.md are re-measured and match the tool.
make lint passes with the new levels.
- No
#[allow] is added above a #[cfg(test)] boundary, which would suppress production hits and make the surface look clean.
Description
41 lints are not enforced, grouped by reason in
[workspace.lints]and explained indocs/lints.md. 38 of them are lints praxis enforces more strictly. The groups: style 10, perf 9, hygiene 7, api 5, complexity 5, attributes 2, docs 1, concurrency 1, test-hygiene 1.Several are cheap now that the tree compiles clean. The complexity group (
too_many_lines,too_many_arguments,cognitive_complexity,type_complexity,struct_excessive_bools) has thresholds already set inclippy.tomlat the bar we want, so enforcing them is the only step left. Some are not cheap:unused_qualificationsis 130 sites whose suggested fixes overlap and cannot be applied by rustfix, andallow_attributescannot be satisfied under every feature set because two suppressions depend on#[cfg(feature)]-gated bodies.The outcome is a decision per lint, not a clean sweep. A lint that stays allowed needs its reason in
docs/lints.md, same as the current entries.Measure per the doc: one lint at a time, on a tree that compiles, since some lints mask each other and a failing crate blocks its dependents from being linted.
touchthe file first; clippy caches hard enough to report a stale zero.Acceptance criteria
clippy.tomlthresholds that are set but inert become live, or the values are revised with a reason.docs/lints.mdare re-measured and match the tool.make lintpasses with the new levels.#[allow]is added above a#[cfg(test)]boundary, which would suppress production hits and make the surface look clean.