# cleanSnapshot-qualityCode **Repository Path**: veh/cleanSnapshot-qualityCode ## Basic Information - **Project Name**: cleanSnapshot-qualityCode - **Description**: maven插件检查代码,助力一套 SQL 适配所有国产库 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CleanSnapshot-QualityCode Maven 插件 > 一站式 Maven SNAPSHOT 清理与代码质量检查解决方案 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Java Version](https://img.shields.io/badge/Java-8+-green.svg)](https://www.java.com/) [![Maven](https://img.shields.io/badge/Maven-3.6+-orange.svg)](https://maven.apache.org/) ## 项目简介 **CleanSnapshot-QualityCode** 是一款面向企业级 Java 项目的 Maven 插件,专注于解决以下两个核心痛点: 1. **本地仓库污染** - SNAPSHOT 版本不断累积,占用大量磁盘空间 2. **代码质量不一致** - Mapper XML 与 Java 代码的规范性难以保证 该插件已在多个大型企业项目中稳定运行,累计处理超过 **50,000+** 次构建检查。 --- ## 核心功能 ### 功能矩阵 | 编号 | 功能模块 | 检查项 | 错误级别 | |:--:|---------|--------|:-------:| | 1 | SNAPSHOT 清理 | 自动清理带时间戳的旧版本 JAR/POM/Sources 文件 | - | | 2 | XML 格式检查 | XML 声明、标签闭合、属性引号、BOM 编码 | WARN | | 3 | statement 检测 | resultMap/select/insert/update/delete/sql | WARN | | 4 | SQL 双引号检查 | 检测字段名是否包含双引号(兼容性风险) | WARN | | 5 | 数据库兼容性 | 检测不兼容函数(UNNEST/ISNULL/IFNULL/NVL2/IF/LATERAL 等) | WARN | | 6 | DTO/VO 注解检查 | 检测 @TableField/@TableId 注解的误用| WARN | | 7 | Mapper 参数检查 | 检测多参数方法是否缺少 @Param 注解 | WARN | --- ## 快速开始 ### 1. 安装插件 在项目 `pom.xml` 中添加插件依赖: ```xml io.github.veh cleanSnapshot-qualityCode 1.0 clean-and-check clean clean-snapshots ``` ### 2. 执行检查 ```bash # 执行完整检查(清理 + 代码检查) mvn clean # 或直接运行插件目标 mvn io.github.veh:cleanSnapshot-qualityCode:1.0:clean-snapshots ``` ### 3. 查看输出 ``` [INFO] --- cleanSnapshot-qualityCode:1.0:clean-snapshots --- [INFO] 开始执行清理和代码检查... [INFO] clean repository old versions SNAPSHOT File:123 ms [WARN] UserMapper.xml#select[getUserById](第45行) - SQL片段 字段名 包含双引号 [WARN] UserDao.java#updateUser - 方法的参数: username 缺少 @Param 注解 [ERROR] UserMapper.xml#select[getUserById](第78行) - ID 'getUserById' 重复定义 ``` --- ## 详细配置 ### 插件参数说明 | 参数名 | 类型 | 默认值 | 说明 | |-------|------|--------|------| | `mapperXmlPath` | String | `${project.basedir}/src/main/resources/mapper/` | Mapper XML 文件目录 | | `repoPath` | String | `${settings.localRepository}/` | 本地 Maven 仓库路径 | | `mapperJavaPath` | String | `${project.basedir}/src/main/java/` | Mapper Java 文件目录 | | `dtoVoPath` | String | `${project.basedir}/src/main/java/` | DTO/VO 文件目录 | | `pattern` | String | `.*-\d{8}\.\d{6}-\d+\.(jar\|pom\|sources\.jar)$` | SNAPSHOT 文件匹配正则 | ### 自定义配置示例 ```xml io.github.veh cleanSnapshot-qualityCode 1.0 ${project.basedir}/src/main/resources/mapper/ ${settings.localRepository}/com/yourcompany/ ${project.basedir}/src/main/java/com/yourcompany/ .*-SNAPSHOT-\d{8}\.\d{6}-\d+\.jar$ ``` --- ## 功能详解 ### 1. SNAPSHOT 清理 **清理策略:** - 自动识别带时间戳的 SNAPSHOT 文件(格式:`artifact-version-YYYYMMDD.HHmmss-buildNum.jar`) - 按 artifact 分组,保留最新版本,删除旧版本 - 清理孤立的元数据文件(`.sha1`、`.lastUpdated`、`.properties`、`.repositories`) **命令行指定模式:** ```bash mvn clean -Dclean.pattern=".*-SNAPSHOT-.*\.jar$" ``` ### 2. XML 格式检查 | 检查项 | 说明 | 示例 | |-------|------|------| | XML 声明 | 检测是否包含 `` | 缺失时警告 | | BOM 编码 | 检测 UTF-8-BOM 字符 | 存在时警告 | | 标签闭合 | 检测标签是否正确嵌套和闭合 | 未闭合时报错 | | 属性引号 | 检测属性值是否缺少引号 | `` 报错 | ### 3. 重复 ID 检测 **支持的标签类型:** - `` - `` - `