# 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://www.java.com/)
[](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 检测
**支持的标签类型:**
- ``
- ``
- `