AI Slop Code Risk Monitor

baomidou/mybatis-plus

SlopCodeMonitor badge for baomidou/mybatis-plus Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

An powerful enhanced toolkit of MyBatis for simplify development

3.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for baomidou/mybatis-plus, a Java project with 17,478 GitHub stars. SynthScan examined 134,149 lines of code across 1207 source files, recording 78 pattern matches distributed across 4 syntactic categories. The legacy adjusted pattern signal is 3.4 (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.

3.4
Adjusted Signal
3.4
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
17.5K
Stars
Java
Language
134.1K
Lines of Code
1.2K
Files
78
Pattern Hits
2026-10-31
Scan Date
0.06
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 0.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 6.0/100 · LOW

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

Agent Over-Engineering Ratio 10.1/100 · LOW

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

PR Review Velocity Impact 16.9/100 · LOW

Which changes need focused human review? 78 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 15HIGH 55MEDIUM 4LOW 4

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 78 distinct pattern matches across 4 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.

Cross-File Repetition55 hits · 275 pts
SeverityFileLineSnippetContext
HIGH…idou/mybatisplus/core/toolkit/TableNameParserTest.java0create table if not exists `user_info` ( `id` int unsigned auto_increment primary key, `username` varchar(50) not null uSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table if not exists `user_info` ( `id` int unsigned auto_increment primary key, `username` varchar(50) not null uSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table if not exists `user_info` ( `id` int unsigned auto_increment primary key, `username` varchar(50) not null uSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table if not exists `user_info` ( `id` int unsigned auto_increment primary key, `username` varchar(50) not null uSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table if not exists `user_info` ( `id` int unsigned auto_increment primary key, `username` varchar(50) not null uSTRING
HIGH…sion/plugins/inner/IllegalSQLInnerInterceptorTest.java0create table t_demo ( `a` int default null, `b` int default null, `c` int default null, key `ab_index1` (`a`,`b`) ); creSTRING
HIGH…sion/plugins/inner/IllegalSQLInnerInterceptorTest.java0create table t_demo ( `a` int default null, `b` int default null, `c` int default null, key `ab_index1` (`a`,`b`) ); creSTRING
HIGH…sion/plugins/inner/IllegalSQLInnerInterceptorTest.java0create table t_demo ( `a` int default null, `b` int default null, `c` int default null, key `ab_index1` (`a`,`b`) ); creSTRING
HIGH…sion/plugins/inner/IllegalSQLInnerInterceptorTest.java0create table t_demo ( `a` int default null, `b` int default null, `c` int default null, key `ab_index1` (`a`,`b`) ); creSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table `tag` ( `id` int(11) not null auto_increment, `name` varchar(50) character set utf8mb4 collate utf8mb4_bin STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table `tag` ( `id` int(11) not null auto_increment, `name` varchar(50) character set utf8mb4 collate utf8mb4_bin STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table `tag` ( `id` int(11) not null auto_increment, `name` varchar(50) character set utf8mb4 collate utf8mb4_bin STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0create table `tag` ( `id` int(11) not null auto_increment, `name` varchar(50) character set utf8mb4 collate utf8mb4_bin STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0-- 查询2023年q2分区数据 select\s region, sum(gross_profit) as 区域总利润, avg(order_value) as 平均订单金额 from\s sales_data partition by\STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0-- 查询2023年q2分区数据 select\s region, sum(gross_profit) as 区域总利润, avg(order_value) as 平均订单金额 from\s sales_data partition by\STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0-- 查询2023年q2分区数据 select\s region, sum(gross_profit) as 区域总利润, avg(order_value) as 平均订单金额 from\s sales_data partition by\STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0-- 查询2023年q2分区数据 select\s region, sum(gross_profit) as 区域总利润, avg(order_value) as 平均订单金额 from\s sales_data partition by\STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s count(*) as 订单总数, sum(o.order_total) as 总销售额, sum(case when o.status = 'completed' then 1 else 0 end) as 完成订单数 STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s count(*) as 订单总数, sum(o.order_total) as 总销售额, sum(case when o.status = 'completed' then 1 else 0 end) as 完成订单数 STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s count(*) as 订单总数, sum(o.order_total) as 总销售额, sum(case when o.status = 'completed' then 1 else 0 end) as 完成订单数 STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s count(*) as 订单总数, sum(o.order_total) as 总销售额, sum(case when o.status = 'completed' then 1 else 0 end) as 完成订单数 STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0delimiter $$ declare\s cur cursor for\s select employee_id from employees where salary < 50000; emp_id int; begin open cSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0delimiter $$ declare\s cur cursor for\s select employee_id from employees where salary < 50000; emp_id int; begin open cSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0delimiter $$ declare\s cur cursor for\s select employee_id from employees where salary < 50000; emp_id int; begin open cSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0delimiter $$ declare\s cur cursor for\s select employee_id from employees where salary < 50000; emp_id int; begin open cSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from employees e join departments d on e.department_id = d.department_id where\s e.last_name like concat('%', :STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from employees e join departments d on e.department_id = d.department_id where\s e.last_name like concat('%', :STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from employees e join departments d on e.department_id = d.department_id where\s e.last_name like concat('%', :STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from employees e join departments d on e.department_id = d.department_id where\s e.last_name like concat('%', :STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s product_id, product_name, stock_quantity, (select\s sum(ordered_qty)\s from\s purchase_orders po\s where\s po.pSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s product_id, product_name, stock_quantity, (select\s sum(ordered_qty)\s from\s purchase_orders po\s where\s po.pSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s product_id, product_name, stock_quantity, (select\s sum(ordered_qty)\s from\s purchase_orders po\s where\s po.pSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select\s product_id, product_name, stock_quantity, (select\s sum(ordered_qty)\s from\s purchase_orders po\s where\s po.pSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0with user_activity as ( select\s user_id, event_type, event_time, row_number() over (partition by user_id order by eventSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0with user_activity as ( select\s user_id, event_type, event_time, row_number() over (partition by user_id order by eventSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0with user_activity as ( select\s user_id, event_type, event_time, row_number() over (partition by user_id order by eventSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0with user_activity as ( select\s user_id, event_type, event_time, row_number() over (partition by user_id order by eventSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from [salesdb].[dbo].[orders] join [marketingdb].[dbo].[customers]\s on orders.customerid = customers.customeriSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from [salesdb].[dbo].[orders] join [marketingdb].[dbo].[customers]\s on orders.customerid = customers.customeriSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from [salesdb].[dbo].[orders] join [marketingdb].[dbo].[customers]\s on orders.customerid = customers.customeriSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from [salesdb].[dbo].[orders] join [marketingdb].[dbo].[customers]\s on orders.customerid = customers.customeriSTRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from ecommerce_orders\s partition (p2022, p2023) where order_date between '2022-01-01' and '2023-12-31';STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from ecommerce_orders\s partition (p2022, p2023) where order_date between '2022-01-01' and '2023-12-31';STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from ecommerce_orders\s partition (p2022, p2023) where order_date between '2022-01-01' and '2023-12-31';STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select * from ecommerce_orders\s partition (p2022, p2023) where order_date between '2022-01-01' and '2023-12-31';STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select order_id, customer_id,amount, rank() over (partition by customer_id order by amount desc) as rank from orders;STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select order_id, customer_id,amount, rank() over (partition by customer_id order by amount desc) as rank from orders;STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select order_id, customer_id,amount, rank() over (partition by customer_id order by amount desc) as rank from orders;STRING
HIGH…er/DynamicTableNameJsqlParserInnerInterceptorTest.java0select order_id, customer_id,amount, rank() over (partition by customer_id order by amount desc) as rank from orders;STRING
HIGH…idou/mybatisplus/test/h2/issues/aop/SingleAopTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
HIGH…baomidou/mybatisplus/test/h2/issues/aop/NoAopTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
HIGH…midou/mybatisplus/test/h2/issues/aop/MultiAopTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
HIGH…h2/issues/repositoryscan/RepositoryMapperScanTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
HIGH…2/issues/repositoryscan/RepositoryDefaultScanTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
HIGH…multisqlsessionfactory/MultiSqlSessionFactoryTest.java0create table if not exists t_entity_b ( id bigint not null auto_increment, name varchar(30) null default null , primary STRING
Hallucination Indicators15 hits · 165 pts
SeverityFileLineSnippetContext
CRITICAL…com/baomidou/mybatisplus/core/toolkit/LambdaUtils.java95 com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda.extract(func));CODE
CRITICAL…com/baomidou/mybatisplus/core/toolkit/LambdaUtils.java120 return new ShadowLambdaMeta(com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda.extract(func));CODE
CRITICAL…va/com/baomidou/mybatisplus/core/toolkit/AopUtils.java71 if (org.springframework.aop.support.AopUtils.isJdkDynamicProxy(proxy)) {CODE
CRITICAL…va/com/baomidou/mybatisplus/core/toolkit/AopUtils.java73 } else if (org.springframework.aop.support.AopUtils.isCglibProxy(proxy)) {CODE
CRITICAL…dou/mybatisplus/generator/config/po/TableInfoTest.java225 tableInfo.getImportPackages().contains(com.baomidou.mybatisplus.annotation.TableField.class.getName()))CODE
CRITICAL⚡…plus/generator/DefaultTableFieldAnnotationHandler.java85 com.baomidou.mybatisplus.annotation.TableField.class.getName()));CODE
CRITICAL⚡…plus/generator/DefaultTableFieldAnnotationHandler.java91 com.baomidou.mybatisplus.annotation.TableField.class.getName()));CODE
CRITICAL⚡…plus/generator/DefaultTableFieldAnnotationHandler.java99 com.baomidou.mybatisplus.annotation.TableField.class.getName()));CODE
CRITICAL…om/baomidou/mybatisplus/generator/util/ClassUtils.java49 return com.baomidou.mybatisplus.core.toolkit.ClassUtils.toClassConfident(name);CODE
CRITICAL…aomidou/mybatisplus/generator/config/po/TableInfo.java302 importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());CODE
CRITICAL…aomidou/mybatisplus/generator/config/po/TableInfo.java306 importPackages.add(com.baomidou.mybatisplus.annotation.TableField.class.getCanonicalName());CODE
CRITICAL…/baomidou/mybatisplus/extension/ddl/DdlHelperTest.java125 var dataSource = new UnpooledDataSource(com.mysql.cj.jdbc.Driver.class.getName(),CODE
CRITICAL…/baomidou/mybatisplus/extension/ddl/DdlHelperTest.java160 var dataSource = new UnpooledDataSource(oracle.jdbc.driver.OracleDriver.class.getName(),CODE
CRITICAL…/baomidou/mybatisplus/extension/ddl/DdlHelperTest.java213 var dataSource = new UnpooledDataSource(dm.jdbc.driver.DmDriver.class.getName(),CODE
CRITICAL…omidou/mybatisplus/spring/spi/SpringCompatibleSet.java122 while (org.springframework.aop.support.AopUtils.isAopProxy(result)) {CODE
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUM…m/baomidou/mybatisplus/test/tenant/TenantManyTest.java33 // ─── Entity classes ────────────────────────────────────────────────────────COMMENT
MEDIUM…m/baomidou/mybatisplus/test/tenant/TenantManyTest.java55 // ─── Mapper interfaces ─────────────────────────────────────────────────────COMMENT
MEDIUM…m/baomidou/mybatisplus/test/tenant/TenantManyTest.java75 // ─── Test ──────────────────────────────────────────────────────────────────COMMENT
MEDIUM…m/baomidou/mybatisplus/test/tenant/TenantManyTest.java102 // ─── Test infrastructure ───────────────────────────────────────────────────COMMENT
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippetContext
LOW…idou/mybatisplus/core/MybatisParameterHandlerTest.java101 //map参数COMMENT
LOW…in/java/com/baomidou/mybatisplus/aot/FeatureUtils.java321 // public void ignoreResources(String... resources) {COMMENT
LOW…lus/test/h2/fillperformance/FillPerformanceConfig.java61 setFieldValByName("e", "1234567890", metaObject);COMMENT
LOW…lus/test/h2/fillperformance/FillPerformanceConfig.java81 // StrictFill.of("c",String.class,"1234567890"),COMMENT