AI Slop Code Risk Monitor

AmazingAng/WTF-Solidity

SlopCodeMonitor badge for AmazingAng/WTF-Solidity Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

WTF Solidity 极简入门教程,供小白们使用。Now supports English! 官网: https://wtf.academy

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for AmazingAng/WTF-Solidity, a Solidity project with 14,067 GitHub stars. SynthScan examined 231,372 lines of code across 1122 source files, recording 103 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.8 (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.

0.8
Adjusted Signal
0.8
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
14.1K
Stars
Solidity
Language
231.4K
Lines of Code
1.1K
Files
103
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 1.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 2.3/100 · LOW

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

PR Review Velocity Impact 3.8/100 · LOW

Which changes need focused human review? 103 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 12MEDIUM 8LOW 83

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 103 distinct pattern matches across 10 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.

Hyper-Verbose Identifiers40 hits · 38 pts
SeverityFileLineSnippetContext
LOWS02_SelectorClash/readme.md69 function putCurEpochConPubKeyBytes(bytes memory _bytes) public {CODE
LOWLanguages/ja/29_Selector_ja/readme.md125    function nonFixedSizeParamSelector(uint256[] memory param1,string memory param2) external returns(bytes4 selectorWitCODE
LOWLanguages/pt-br/S02_SelectorClash/readme.md59 function putCurEpochConPubKeyBytes(bytes memory _bytes) public {CODE
LOWLanguages/en/S02_SelectorClash_en/readme.md70 function putCurEpochConPubKeyBytes(bytes memory _bytes) public {CODE
LOWlib/forge-std/scripts/vm.py138def prefix_with_group_headers(cheats: list["Cheatcode"]):STRING
LOW…pelin-contracts/test/token/ERC1155/ERC1155.behavior.js517 function batchTransferWasSuccessful() {CODE
LOW…y/transparent/TransparentUpgradeableProxy.behaviour.js8module.exports = function shouldBehaveLikeTransparentUpgradeableProxy() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js12function shouldBehaveLikeAccessControl() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js227function shouldBehaveLikeAccessControlEnumerable() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js264function shouldBehaveLikeAccessControlDefaultAdminRules() {CODE
LOW…ntracts/test/access/manager/AccessManager.predicate.js171function testAsSchedulableOperation({ scheduled: { before, after, expired }, notScheduled }) {CODE
LOW…ntracts/test/access/manager/AccessManager.predicate.js234function testAsRestrictedOperation({ callerIsTheManager: { executing, notExecuting }, callerIsNotTheManager }) {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js19function shouldBehaveLikeDelayedAdminOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js58function shouldBehaveLikeNotDelayedAdminOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js102function shouldBehaveLikeRoleAdminOperation(roleAdmin) {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js142function shouldBehaveLikeAManagedRestrictedOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js199function shouldBehaveLikeASelfRestrictedOperation() {CODE
LOW…/openzeppelin-contracts/test/utils/Context.behavior.js8function shouldBehaveLikeRegularContext() {CODE
LOW…b/openzeppelin-contracts/test/utils/Nonces.behavior.js69function shouldBehaveLikeNoncesKeyed() {CODE
LOW…penzeppelin-contracts/test/account/Account.behavior.js7function shouldBehaveLikeAccountCore() {CODE
LOW…penzeppelin-contracts/test/account/Account.behavior.js80function shouldBehaveLikeAccountHolder() {CODE
LOWlib/openzeppelin-contracts/lib/forge-std/scripts/vm.py138def prefix_with_group_headers(cheats: list["Cheatcode"]):STRING
LOW29_Selector/readme.md117    function nonFixedSizeParamSelector(uint256[] memory param1,string memory param2) external returns(bytes4 selectorWitCODE
LOW…pelin-contracts/test/token/ERC1155/ERC1155.behavior.js517 function batchTransferWasSuccessful() {CODE
LOW…y/transparent/TransparentUpgradeableProxy.behaviour.js8module.exports = function shouldBehaveLikeTransparentUpgradeableProxy() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js12function shouldBehaveLikeAccessControl() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js227function shouldBehaveLikeAccessControlEnumerable() {CODE
LOW…ppelin-contracts/test/access/AccessControl.behavior.js264function shouldBehaveLikeAccessControlDefaultAdminRules() {CODE
LOW…ntracts/test/access/manager/AccessManager.predicate.js171function testAsSchedulableOperation({ scheduled: { before, after, expired }, notScheduled }) {CODE
LOW…ntracts/test/access/manager/AccessManager.predicate.js234function testAsRestrictedOperation({ callerIsTheManager: { executing, notExecuting }, callerIsNotTheManager }) {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js19function shouldBehaveLikeDelayedAdminOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js58function shouldBehaveLikeNotDelayedAdminOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js102function shouldBehaveLikeRoleAdminOperation(roleAdmin) {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js142function shouldBehaveLikeAManagedRestrictedOperation() {CODE
LOW…ontracts/test/access/manager/AccessManager.behavior.js199function shouldBehaveLikeASelfRestrictedOperation() {CODE
LOW…/openzeppelin-contracts/test/utils/Context.behavior.js8function shouldBehaveLikeRegularContext() {CODE
LOW…b/openzeppelin-contracts/test/utils/Nonces.behavior.js69function shouldBehaveLikeNoncesKeyed() {CODE
LOW…penzeppelin-contracts/test/account/Account.behavior.js7function shouldBehaveLikeAccountCore() {CODE
LOW…penzeppelin-contracts/test/account/Account.behavior.js80function shouldBehaveLikeAccountHolder() {CODE
LOW…lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py138def prefix_with_group_headers(cheats: list["Cheatcode"]):STRING
Decorative Section Separators8 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml4# ┌───────────┐ ┌─────────────┐ ┌────────────────┐COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml6# └───────────┘ └─┬─────────▲─┘ │ └─┬────────────▲─┘COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml10# ┌▼─────────┴┐ │ ┌▼────────────┴┐COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml12# └───────────┘ └──────────────┘COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml4# ┌───────────┐ ┌─────────────┐ ┌────────────────┐COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml6# └───────────┘ └─┬─────────▲─┘ │ └─┬────────────▲─┘COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml10# ┌▼─────────┴┐ │ ┌▼────────────┴┐COMMENT
MEDIUM⚡…zeppelin-contracts/.github/workflows/release-cycle.yml12# └───────────┘ └──────────────┘COMMENT
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHlib/forge-std/scripts/vm.py0\ /// the `vmsafe` interface does not allow manipulation of the evm state or other actions that may /// result in scriptSTRING
HIGHlib/openzeppelin-contracts/lib/forge-std/scripts/vm.py0\ /// the `vmsafe` interface does not allow manipulation of the evm state or other actions that may /// result in scriptSTRING
HIGH…lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py0\ /// the `vmsafe` interface does not allow manipulation of the evm state or other actions that may /// result in scriptSTRING
HIGHlib/forge-std/scripts/vm.py0\ /// the `vm` interface does allow manipulation of the evm state. these are all intended to be used /// in tests, but iSTRING
HIGHlib/openzeppelin-contracts/lib/forge-std/scripts/vm.py0\ /// the `vm` interface does allow manipulation of the evm state. these are all intended to be used /// in tests, but iSTRING
HIGH…lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py0\ /// the `vm` interface does allow manipulation of the evm state. these are all intended to be used /// in tests, but iSTRING
Over-Commented Block20 hits · 20 pts
SeverityFileLineSnippetContext
LOW…r/Topics/Onchain_debug/03_write_your_own_poc/readme.md181pragma solidity ^0.8.17;COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md61COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md81COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md101 /// @param _from Proprietário atual do NFTCOMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md121 /// @dev Aciona o evento ApprovalForAll. O contrato deve permitir que um proprietário de NFT tenha vários gerentes dCOMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md161COMMENT
LOW…in-contracts/test/access/manager/AccessManager.test.js81 manager,COMMENT
LOW…eppelin-contracts/test/metatx/ERC2771Forwarder.test.js161COMMENT
LOW…enzeppelin-contracts/scripts/fetch-common-contracts.js1#!/usr/bin/env nodeCOMMENT
LOW…zeppelin-contracts/.github/workflows/release-cycle.yml1# D: Manual DispatchCOMMENT
LOWTopics/Onchain_debug/03_write_your_own_poc/readme.md181```solidity=COMMENT
LOW…in-contracts/test/access/manager/AccessManager.test.js81 manager,COMMENT
LOW…eppelin-contracts/test/metatx/ERC2771Forwarder.test.js161COMMENT
LOW…enzeppelin-contracts/scripts/fetch-common-contracts.js1#!/usr/bin/env nodeCOMMENT
LOW…zeppelin-contracts/.github/workflows/release-cycle.yml1# D: Manual DispatchCOMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md61COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md81COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md101 /// @param _from 当前NFT的拥有者COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md121 /// @dev 触发 ApprovalForAll 事件. 合约必须允许一个NFT的owner有多个被授权的第三方管理者COMMENT
LOW…_34_ERC721_ShuxunOo/ERC721实例分析总结_ShuxunOo/ERC721 综述.md161COMMENT
Magic Placeholder Names4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHLanguages/pt-br/Topics/Tools/TOOL03_Ganache/readme.md79ganache -f https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEYCODE
HIGHLanguages/pt-br/Topics/Tools/TOOL03_Ganache/readme.md91ganache -f https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY --wallet.accounts=ACCOUNT_PRIVATE_KEY,AMOUNT_WEI --wallet.aCODE
HIGHTopics/Tools/TOOL03_Ganache/readme.md80ganache -f https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEYCODE
HIGHTopics/Tools/TOOL03_Ganache/readme.md92ganache -f https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY --wallet.accounts=ACCOUNT_PRIATE_KEY,AMOUNT_WEI --wallet.acCODE
Fake / Example Data12 hits · 12 pts
SeverityFileLineSnippetContext
LOWlib/openzeppelin-contracts/test/utils/RLP.test.js179 'Lorem ipsum dolor sit amet, consectetur adipisicing elit',CODE
LOWlib/openzeppelin-contracts/test/utils/RLP.test.js179 'Lorem ipsum dolor sit amet, consectetur adipisicing elit',CODE
LOWlib/openzeppelin-contracts/test/utils/Bytes.test.js20 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aCODE
LOWlib/openzeppelin-contracts/test/utils/Bytes.test.js20 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aCODE
LOW…enzeppelin-contracts/test/utils/SlotDerivation.test.js46 { type: 'string', key: 'lorem ipsum', isValueType: false },CODE
LOW…/openzeppelin-contracts/test/utils/StorageSlot.test.js16 { name: 'String', type: 'string', value: 'lorem ipsum', isValueType: false, zero: '' },CODE
LOW…_wtf/lib/openzeppelin-contracts/test/utils/RLP.test.js179 'Lorem ipsum dolor sit amet, consectetur adipisicing elit',CODE
LOW…_wtf/lib/openzeppelin-contracts/test/utils/RLP.test.js179 'Lorem ipsum dolor sit amet, consectetur adipisicing elit',CODE
LOW…tf/lib/openzeppelin-contracts/test/utils/Bytes.test.js20 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aCODE
LOW…tf/lib/openzeppelin-contracts/test/utils/Bytes.test.js20 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aCODE
LOW…enzeppelin-contracts/test/utils/SlotDerivation.test.js46 { type: 'string', key: 'lorem ipsum', isValueType: false },CODE
LOW…/openzeppelin-contracts/test/utils/StorageSlot.test.js16 { name: 'String', type: 'string', value: 'lorem ipsum', isValueType: false, zero: '' },CODE
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHlib/openzeppelin-contracts/scripts/gen-nav.js76print(CODE
HIGH…ello_wtf/lib/openzeppelin-contracts/scripts/gen-nav.js76print(CODE
Structural Annotation Overuse5 hits · 8 pts
SeverityFileLineSnippetContext
LOWTopics/Onchain_debug/03_write_your_own_poc/en/readme.md91### Step 1: Information gatheringCOMMENT
LOWTopics/Onchain_debug/03_write_your_own_poc/en/readme.md110### Step 2: Transaction DebuggingCOMMENT
LOWTopics/Onchain_debug/03_write_your_own_poc/en/readme.md162### Step 3: Reproduce codeCOMMENT
LOWTopics/Onchain_debug/03_write_your_own_poc/en/readme.md306### Step 4: Analyzing the exploitCOMMENT
LOWTopics/Onchain_debug/03_write_your_own_poc/en/readme.md375### Step 5: ReproduceCOMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWlib/forge-std/scripts/vm.py424CODE
LOWlib/openzeppelin-contracts/lib/forge-std/scripts/vm.py424CODE
LOW…lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py424CODE
Deep Nesting3 hits · 3 pts
SeverityFileLineSnippetContext
LOWlib/forge-std/scripts/vm.py478CODE
LOWlib/openzeppelin-contracts/lib/forge-std/scripts/vm.py478CODE
LOW…lib/openzeppelin-contracts/lib/forge-std/scripts/vm.py478CODE