AI Slop Code RIsk Monitor

rust-lang/rust-clippy

A bunch of lints to catch common mistakes and improve your Rust code. Book: https://doc.rust-lang.org/clippy/

4.6 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for rust-lang/rust-clippy, a Rust project with 13,573 GitHub stars. SynthScan examined 321,486 lines of code across 2683 source files, recording 1622 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 4.6 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.6
Adjusted Signal
4.6
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
13.6K
Stars
Rust
Language
321.5K
Lines of Code
2.7K
Files
1.6K
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 20.1/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 1599 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

Are imports declared and package/API names verified? 23 finding(s).

Agent Over-Engineering Ratio 0.0/100 · LOW

Are wrappers, guards, and repeated structures necessary? 0 finding(s).

PR Review Velocity Impact 22.4/100 · LOW

Which changes need focused human review? 1622 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 0MEDIUM 5LOW 1617

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 1622 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block1579 hits · 1402 pts
SeverityFileLineSnippetContext
LOWclippy_utils/src/consts.rs41 /// A single `char` (e.g., `'a'`).COMMENT
LOWclippy_utils/src/diagnostics.rs81///COMMENT
LOWclippy_utils/src/diagnostics.rs101/// |COMMENT
LOWclippy_utils/src/diagnostics.rs121/// For the `span_lint_and_help` function, the node that was passed into the `LintPass::check_*`COMMENT
LOWclippy_utils/src/diagnostics.rs161COMMENT
LOWclippy_utils/src/diagnostics.rs181/// If it doesn't, you likely need to use [`span_lint_hir_and_then`] instead.COMMENT
LOWclippy_utils/src/diagnostics.rs221///COMMENT
LOWclippy_utils/src/diagnostics.rs261 f(diag);COMMENT
LOWclippy_utils/src/diagnostics.rs281///COMMENT
LOWclippy_utils/src/diagnostics.rs301/// This is in contrast to [`span_lint_and_then`], which always emits the lint at the node that wasCOMMENT
LOWclippy_utils/src/diagnostics.rs341COMMENT
LOWclippy_utils/src/diagnostics.rs361/// If you're emitting the lint at the span of a different node than the one provided by theCOMMENT
LOWclippy_utils/src/lib.rs141 let sess = rustc_lint::LintContext::sess(cx);COMMENT
LOWclippy_utils/src/lib.rs441COMMENT
LOWclippy_utils/src/lib.rs721/// Checks if the top level expression can be moved into a closure as is.COMMENT
LOWclippy_utils/src/lib.rs741/// ```COMMENT
LOWclippy_utils/src/lib.rs1381COMMENT
LOWclippy_utils/src/lib.rs1801}COMMENT
LOWclippy_utils/src/lib.rs1901/// * `x` is the identity representation of `x`COMMENT
LOWclippy_utils/src/lib.rs2081/// For example, `f` inCOMMENT
LOWclippy_utils/src/lib.rs2481COMMENT
LOWclippy_utils/src/lib.rs2921COMMENT
LOWclippy_utils/src/lib.rs3041 self.break_targets.push(BreakTarget { id, unused: true });COMMENT
LOWclippy_utils/src/lib.rs3301 let caller_path = tcx.def_path(from.to_def_id());COMMENT
LOWclippy_utils/src/lib.rs3341 // consider:COMMENT
LOWclippy_utils/src/lib.rs3621/// - then or else part of a `if` in return positionCOMMENT
LOWclippy_utils/src/check_proc_macro.rs1//! This module handles checking if the span given is from a proc-macro or not.COMMENT
LOWclippy_utils/src/paths.rs21COMMENT
LOWclippy_utils/src/res.rs261COMMENT
LOWclippy_utils/src/res.rs341 }COMMENT
LOWclippy_utils/src/str_utils.rs1//! Utilities for analyzing and transforming strings.COMMENT
LOWclippy_utils/src/str_utils.rs21 pub byte_index: usize,COMMENT
LOWclippy_utils/src/str_utils.rs81/// assert_eq!(camel_case_start("ABCD"), StrIndex::new(4, 4));COMMENT
LOWclippy_utils/src/str_utils.rs141/// ```no_runCOMMENT
LOWclippy_utils/src/str_utils.rs201}COMMENT
LOWclippy_utils/src/source.rs161 }COMMENT
LOWclippy_utils/src/source.rs421/// Extends the span to the beginning of the spans line, incl. whitespaces.COMMENT
LOWclippy_utils/src/source.rs461// expansion and we want to ignore those, because they could come from externalCOMMENT
LOWclippy_utils/src/source.rs541/// This is useful if you want to provide suggestions for your lint or more generally, if you wantCOMMENT
LOWclippy_utils/src/source.rs601}COMMENT
LOWclippy_utils/src/source.rs621/// y;COMMENT
LOWclippy_utils/src/source.rs721 snippet_with_applicability_sm(sm, span, default, applicability),COMMENT
LOWclippy_utils/src/source.rs741/// containing `0` as the context is the same as the outer context.COMMENT
LOWclippy_utils/src/sugg.rs21COMMENT
LOWclippy_utils/src/sugg.rs581/// operators have the same precedence.COMMENT
LOWclippy_utils/src/sugg.rs721 ///COMMENT
LOWclippy_utils/src/sugg.rs961 let _: fmt::Result = write!(self.suggestion_start, "{start_snip}&{ident_str}");COMMENT
LOWclippy_utils/src/hir_utils.rs41 Exact,COMMENT
LOWclippy_utils/src/macros.rs161/// macro call, as in [`first_node_in_macro`].COMMENT
LOWclippy_utils/src/macros.rs181/// with the `ExpnId` of the containing block.COMMENT
LOWclippy_utils/src/macros.rs261/// Is `def_id` of `assert!` or `debug_assert!`COMMENT
LOWclippy_lints_internal/src/lint_without_lint_pass.rs21 /// The compiler only knows lints via a `LintPass`. WithoutCOMMENT
LOWclippy_lints_internal/src/lint_without_lint_pass.rs41 report_in_external_macro: trueCOMMENT
LOW…ippy_lints_internal/src/repeated_is_diagnostic_item.rs21 ///COMMENT
LOW…ippy_lints_internal/src/repeated_is_diagnostic_item.rs41 /// } else if cx.tcx.is_diagnostic_item(sym::Result, did) {COMMENT
LOW…ippy_lints_internal/src/repeated_is_diagnostic_item.rs61 /// ..COMMENT
LOW…ippy_lints_internal/src/repeated_is_diagnostic_item.rs81 ///COMMENT
LOW…ippy_lints_internal/src/repeated_is_diagnostic_item.rs101 /// }COMMENT
LOW…ippy_lints_internal/src/collapsible_span_lint_calls.rs21 /// wrapper functions `span_lint_and_sugg`, `span_lint_and_help`, orCOMMENT
LOW…ippy_lints_internal/src/collapsible_span_lint_calls.rs41 /// span_lint_and_then(cx, TEST_LINT, expr.span, lint_msg, |diag| {COMMENT
1519 more matches not shown…
Fake / Example Data23 hits · 42 pts
SeverityFileLineSnippetContext
LOWtests/ui/sliced_string_as_bytes.rs24 let s = "Lorem ipsum";CODE
LOWtests/ui/sliced_string_as_bytes.rs25 let string: String = "dolor sit amet".to_owned();CODE
LOW⚡tests/ui/too_long_first_doc_paragraph.rs16/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs16/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs23/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs23/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs29/// Lorem ipsum dolor sit amet, consectetur adipiscing elit.COMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs29/// Lorem ipsum dolor sit amet, consectetur adipiscing elit.COMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs40/// ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs50/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs50/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs59/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs59/// Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc turpis nunc, laciniaCOMMENT
LOW⚡tests/ui/too_long_first_doc_paragraph.rs65/// Some function. This doc-string paragraph is too long. Lorem Ipsum is simply dummy text of the printing and typesettiCOMMENT
LOWtests/ui/too_long_first_doc_paragraph.rs77/// Some function. This doc-string paragraph is too long. Lorem Ipsum is simply dummy text of the printing and typesettiCOMMENT
LOW…documented_unsafe_blocks/undocumented_unsafe_blocks.rs119 // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporCOMMENT
LOW…documented_unsafe_blocks/undocumented_unsafe_blocks.rs119 // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporCOMMENT
LOW…documented_unsafe_blocks/undocumented_unsafe_blocks.rs538 // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporCOMMENT
LOW…documented_unsafe_blocks/undocumented_unsafe_blocks.rs538 // Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporCOMMENT
LOWtests/ui-toml/large_include_file/too_big.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqCODE
LOWtests/ui-toml/large_include_file/too_big.txt1Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqCODE
LOWclippy_lints/src/methods/mod.rs3738 /// let s = "Lorem ipsum";COMMENT
LOWclippy_lints/src/methods/mod.rs3743 /// let s = "Lorem ipsum";COMMENT
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMclippy_lints/src/same_length_and_capacity.rs65 /// // This time, leverage the previously saved capacity:COMMENT
MEDIUMclippy_lints/src/large_stack_frames.rs196 // TODO: Is there a cleaner, robust way to ask this question?COMMENT
MEDIUMclippy_lints/src/operators/mod.rs497 /// technically unnecessary. However, it will make the code more robust and doesn't have anyCOMMENT
MEDIUMsrc/driver.rs156 // is there already. Certainly it can't hurt.COMMENT
Slop Phrases5 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMlintcheck/lintcheck_crates.toml6# For testing you can also add sources to git and local repos like this:COMMENT
LOW.github/workflows/clippy_mq.yml33 # NOTE: If you modify this job, make sure you copy the changes to clippy.ymlCOMMENT
LOW.github/workflows/clippy_mq.yml198 # NOTE: If you modify this job, make sure you copy the changes to clippy_pr.ymlCOMMENT
LOW.github/workflows/clippy_pr.yml21 # NOTE: If you modify this job, make sure you copy the changes to clippy_mq.ymlCOMMENT
LOW.github/workflows/clippy_pr.yml66 # NOTE: If you modify this job, make sure you copy the changes to clippy_mq.ymlCOMMENT
Redundant / Tautological Comments5 hits · 8 pts
SeverityFileLineSnippetContext
LOW.github/workflows/clippy_mq.yml265 # Check if all jobs that we depend on (in the needs array) were successful.COMMENT
LOW.github/workflows/clippy_dev.yml60 # Check if all jobs that we depend on (in the needs array) were successful.COMMENT
LOW.github/workflows/clippy_pr.yml135 # Check if all jobs that we depend on (in the needs array) were successful.COMMENT
LOW.github/workflows/clippy_changelog.yml50 # Check if all jobs that we depend on (in the needs array) were successful.COMMENT
LOW.github/workflows/remark.yml66 # Check if all jobs that we depend on (in the needs array) were successful.COMMENT
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOWREADME.md61#### Step 1: Install RustupCOMMENT
LOWREADME.md73#### Step 2: Install ClippyCOMMENT
LOWREADME.md83#### Step 3: Run ClippyCOMMENT
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWclippy_lints/src/non_copy_const.rs455 // Normalized as we need to check if this is an array later.COMMENT
LOWclippy_lints/src/non_copy_const.rs498 // Normalized as we need to check if this is an array later.COMMENT
LOWclippy_lints/src/non_copy_const.rs637 // Normalized as we need to check if this is an array later.COMMENT