diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index bebffd2..cf9a604 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -51,13 +51,6 @@ maven-deploy-plugin 3.1.2 - - default-deploy - deploy - - deploy - - deploy-to-nexus package diff --git a/src/main/java/com/codechecker/analyzer/ClassChangeAnalyzer.java b/src/main/java/com/codechecker/analyzer/ClassChangeAnalyzer.java index 97cd605..2f8d48c 100644 --- a/src/main/java/com/codechecker/analyzer/ClassChangeAnalyzer.java +++ b/src/main/java/com/codechecker/analyzer/ClassChangeAnalyzer.java @@ -18,6 +18,7 @@ import java.util.Map; /** * 编排 git 扫描、字段 diff、影响分析,生成待通知的 ClassChangeReport 列表。 + * Dto / Vo / Entity / Model 均通过 {@link ClassDeclParser}、{@link ClassFieldParser} 提取类级与字段中文说明。 */ public class ClassChangeAnalyzer { private final GitChangeScanner gitScanner; diff --git a/src/main/java/com/codechecker/model/ClassChangeReport.java b/src/main/java/com/codechecker/model/ClassChangeReport.java index 195632b..381f1ee 100644 --- a/src/main/java/com/codechecker/model/ClassChangeReport.java +++ b/src/main/java/com/codechecker/model/ClassChangeReport.java @@ -65,7 +65,7 @@ public class ClassChangeReport { return sourceFile; } - /** 类级中文说明(@Schema / 类 Javadoc),无则空串 */ + /** 类级中文说明(@Schema / @ApiModel / 类 Javadoc),无则空串 */ public String getClassDescription() { return classDescription; } diff --git a/src/main/java/com/codechecker/parser/ClassDeclParser.java b/src/main/java/com/codechecker/parser/ClassDeclParser.java index eafa1b2..c43e902 100644 --- a/src/main/java/com/codechecker/parser/ClassDeclParser.java +++ b/src/main/java/com/codechecker/parser/ClassDeclParser.java @@ -68,7 +68,8 @@ public class ClassDeclParser { } /** - * 提取类级中文说明:@Schema(description/title) > 类 Javadoc 首段。 + * 提取类级中文说明:@Schema(description/title) > @ApiModel(description/value) > 类 Javadoc 首段。 + * 适用于 Dto / Vo / Entity / Model 全部模型类变更通知。 */ public String extractClassDescription(String source, String expectedClassName) { if (source == null || source.isBlank()) { @@ -80,9 +81,9 @@ public class ClassDeclParser { if (classDecl == null) { return ""; } - String fromSchema = readSchemaDescription(classDecl); - if (!fromSchema.isEmpty()) { - return fromSchema; + String fromAnnotation = readClassAnnotationDescription(classDecl); + if (!fromAnnotation.isEmpty()) { + return fromAnnotation; } return extractClassJavadoc(classDecl); } catch (Exception ignored) { @@ -109,18 +110,28 @@ public class ClassDeclParser { return null; } - private String readSchemaDescription(ClassOrInterfaceDeclaration classDecl) { + private String readClassAnnotationDescription(ClassOrInterfaceDeclaration classDecl) { for (AnnotationExpr annotation : classDecl.getAnnotations()) { - if (!"Schema".equals(annotation.getNameAsString())) { - continue; + String annName = annotation.getNameAsString(); + if ("Schema".equals(annName)) { + String description = readAnnotationStringValue(annotation, "description"); + if (!description.isEmpty()) { + return description; + } + String title = readAnnotationStringValue(annotation, "title"); + if (!title.isEmpty()) { + return title; + } } - String description = readAnnotationStringValue(annotation, "description"); - if (!description.isEmpty()) { - return description; - } - String title = readAnnotationStringValue(annotation, "title"); - if (!title.isEmpty()) { - return title; + if ("ApiModel".equals(annName)) { + String description = readAnnotationStringValue(annotation, "description"); + if (!description.isEmpty()) { + return description; + } + String value = readAnnotationStringValue(annotation, "value"); + if (!value.isEmpty()) { + return value; + } } } return ""; diff --git a/src/main/java/com/codechecker/parser/ClassFieldParser.java b/src/main/java/com/codechecker/parser/ClassFieldParser.java index 15be0c1..b918fde 100644 --- a/src/main/java/com/codechecker/parser/ClassFieldParser.java +++ b/src/main/java/com/codechecker/parser/ClassFieldParser.java @@ -74,7 +74,8 @@ public class ClassFieldParser { } /** - * 字段说明:@Schema(description) > @ApiModelProperty > Javadoc,均无则空串。 + * 字段说明:@Schema(description/title) > @ApiModelProperty(value/notes) > Javadoc,均无则空串。 + * 适用于 Dto / Vo / Entity / Model 全部模型类字段变更通知。 */ String extractFieldLabel(FieldDeclaration fieldDecl) { for (AnnotationExpr annotation : fieldDecl.getAnnotations()) { @@ -84,12 +85,22 @@ public class ClassFieldParser { if (!description.isEmpty()) { return description; } + String title = readAnnotationStringValue(annotation, "title"); + if (!title.isEmpty()) { + return title; + } } - if ("ApiModelProperty".equals(annName)) { + } + for (AnnotationExpr annotation : fieldDecl.getAnnotations()) { + if ("ApiModelProperty".equals(annotation.getNameAsString())) { String value = readAnnotationStringValue(annotation, "value"); if (!value.isEmpty()) { return value; } + String notes = readAnnotationStringValue(annotation, "notes"); + if (!notes.isEmpty()) { + return notes; + } } } return extractJavadoc(fieldDecl); diff --git a/src/main/resources/notify-templates/README.md b/src/main/resources/notify-templates/README.md index 86e10cc..cc4c241 100644 --- a/src/main/resources/notify-templates/README.md +++ b/src/main/resources/notify-templates/README.md @@ -18,7 +18,7 @@ Push 触发 CI 后,按变更类的后缀(`Dto` / `Vo` / `Entity` / `Model` ## 布局约定 -1. **# 【类变更通知】** — 头部 4 项,每项一行 `>**标签: 值**`(加粗,冒号后两空格);变更对象括号内展示类中文说明(@Schema / Javadoc),无说明则仅类名 +1. **# 【类变更通知】** — 头部 4 项,每项一行 `>**标签: 值**`(加粗,冒号后两空格);变更对象括号内展示类中文说明(@Schema / @ApiModel / Javadoc),无说明则仅类名 2. **## 【对象变更细节】** — 统计行 + 每条变更单行(标签/说明/类型合并) 3. **## 【影响范围】** — 各 ### 小节内,每项一行引用 @@ -55,4 +55,11 @@ Dto/Vo 均固定展示 request、response 两栏;无匹配接口时显示「 ## 实现 -`WeComNotifier.buildMarkdown()` · 消息类型 `markdown` · 路径取自 `ClassChangeReport.sourceFile` +| 组件 | 职责 | +|------|------| +| `ClassDeclParser.extractClassDescription()` | 类级中文说明(Dto / Vo / Entity / Model 通用) | +| `ClassFieldParser.extractFieldLabel()` | 字段中文说明(四类通用) | +| `ClassChangeAnalyzer` | 编排 diff 并写入 `ClassChangeReport` | +| `WeComNotifier.buildMarkdown()` | 渲染企微 `markdown` 通知 | + +路径取自 `ClassChangeReport.sourceFile`。 diff --git a/src/main/resources/notify-templates/dto.md b/src/main/resources/notify-templates/dto.md index b192bd2..b4789e6 100644 --- a/src/main/resources/notify-templates/dto.md +++ b/src/main/resources/notify-templates/dto.md @@ -103,4 +103,5 @@ | 占位符 | 来源 | |--------|------| | 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | -| 说明 | `@Schema` / 注释 | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/src/main/resources/notify-templates/entity.md b/src/main/resources/notify-templates/entity.md index 77e8e8a..22f74cd 100644 --- a/src/main/resources/notify-templates/entity.md +++ b/src/main/resources/notify-templates/entity.md @@ -47,3 +47,13 @@ > [类名变更] TrainingPositionEntityTrainingPositionNewEntity > 字段无变化 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/src/main/resources/notify-templates/field-description.md b/src/main/resources/notify-templates/field-description.md index 9243b29..8f4e50a 100644 --- a/src/main/resources/notify-templates/field-description.md +++ b/src/main/resources/notify-templates/field-description.md @@ -1,16 +1,19 @@ # 字段说明规则 +适用于 **Dto / Vo / Entity / Model** 四类模型类的变更通知。 字段变更采用 **引用块 + 单行合并 + font 颜色**,遵循企微 `markdown` v1(不支持列表)。 ## 说明提取优先级 | 优先级 | 来源 | |:------:|------| -| 1 | `@Schema(description = "...")` | -| 2 | `@ApiModelProperty` | +| 1 | `@Schema(description = "...")` / `@Schema(title = "...")` | +| 2 | `@ApiModelProperty(value = "...")` / `@ApiModelProperty(notes = "...")` | | 3 | `/** ... */` 字段注释 | | 4 | 空串 | +类级说明优先级:`@Schema(description/title)` → `@ApiModel(description/value)` → 类 Javadoc。 + ## 字段变更行格式 每条变更占**一行**,标签、说明、类型横向排列,冒号后两空格: diff --git a/src/main/resources/notify-templates/model.md b/src/main/resources/notify-templates/model.md index cc93d4d..e8223f7 100644 --- a/src/main/resources/notify-templates/model.md +++ b/src/main/resources/notify-templates/model.md @@ -47,3 +47,13 @@ > [类名变更] AttendanceRuleModelAttendanceRuleNewModel > 字段无变化 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/src/main/resources/notify-templates/vo.md b/src/main/resources/notify-templates/vo.md index 1289030..359630e 100644 --- a/src/main/resources/notify-templates/vo.md +++ b/src/main/resources/notify-templates/vo.md @@ -61,3 +61,13 @@ ### 类转换影响 > 未开启检测 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/target/classes/notify-templates/README.md b/target/classes/notify-templates/README.md index 86e10cc..cc4c241 100644 --- a/target/classes/notify-templates/README.md +++ b/target/classes/notify-templates/README.md @@ -18,7 +18,7 @@ Push 触发 CI 后,按变更类的后缀(`Dto` / `Vo` / `Entity` / `Model` ## 布局约定 -1. **# 【类变更通知】** — 头部 4 项,每项一行 `>**标签: 值**`(加粗,冒号后两空格);变更对象括号内展示类中文说明(@Schema / Javadoc),无说明则仅类名 +1. **# 【类变更通知】** — 头部 4 项,每项一行 `>**标签: 值**`(加粗,冒号后两空格);变更对象括号内展示类中文说明(@Schema / @ApiModel / Javadoc),无说明则仅类名 2. **## 【对象变更细节】** — 统计行 + 每条变更单行(标签/说明/类型合并) 3. **## 【影响范围】** — 各 ### 小节内,每项一行引用 @@ -55,4 +55,11 @@ Dto/Vo 均固定展示 request、response 两栏;无匹配接口时显示「 ## 实现 -`WeComNotifier.buildMarkdown()` · 消息类型 `markdown` · 路径取自 `ClassChangeReport.sourceFile` +| 组件 | 职责 | +|------|------| +| `ClassDeclParser.extractClassDescription()` | 类级中文说明(Dto / Vo / Entity / Model 通用) | +| `ClassFieldParser.extractFieldLabel()` | 字段中文说明(四类通用) | +| `ClassChangeAnalyzer` | 编排 diff 并写入 `ClassChangeReport` | +| `WeComNotifier.buildMarkdown()` | 渲染企微 `markdown` 通知 | + +路径取自 `ClassChangeReport.sourceFile`。 diff --git a/target/classes/notify-templates/dto.md b/target/classes/notify-templates/dto.md index b192bd2..b4789e6 100644 --- a/target/classes/notify-templates/dto.md +++ b/target/classes/notify-templates/dto.md @@ -103,4 +103,5 @@ | 占位符 | 来源 | |--------|------| | 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | -| 说明 | `@Schema` / 注释 | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/target/classes/notify-templates/entity.md b/target/classes/notify-templates/entity.md index 77e8e8a..22f74cd 100644 --- a/target/classes/notify-templates/entity.md +++ b/target/classes/notify-templates/entity.md @@ -47,3 +47,13 @@ > [类名变更] TrainingPositionEntityTrainingPositionNewEntity > 字段无变化 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/target/classes/notify-templates/field-description.md b/target/classes/notify-templates/field-description.md index 9243b29..8f4e50a 100644 --- a/target/classes/notify-templates/field-description.md +++ b/target/classes/notify-templates/field-description.md @@ -1,16 +1,19 @@ # 字段说明规则 +适用于 **Dto / Vo / Entity / Model** 四类模型类的变更通知。 字段变更采用 **引用块 + 单行合并 + font 颜色**,遵循企微 `markdown` v1(不支持列表)。 ## 说明提取优先级 | 优先级 | 来源 | |:------:|------| -| 1 | `@Schema(description = "...")` | -| 2 | `@ApiModelProperty` | +| 1 | `@Schema(description = "...")` / `@Schema(title = "...")` | +| 2 | `@ApiModelProperty(value = "...")` / `@ApiModelProperty(notes = "...")` | | 3 | `/** ... */` 字段注释 | | 4 | 空串 | +类级说明优先级:`@Schema(description/title)` → `@ApiModel(description/value)` → 类 Javadoc。 + ## 字段变更行格式 每条变更占**一行**,标签、说明、类型横向排列,冒号后两空格: diff --git a/target/classes/notify-templates/model.md b/target/classes/notify-templates/model.md index cc93d4d..e8223f7 100644 --- a/target/classes/notify-templates/model.md +++ b/target/classes/notify-templates/model.md @@ -47,3 +47,13 @@ > [类名变更] AttendanceRuleModelAttendanceRuleNewModel > 字段无变化 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) | diff --git a/target/classes/notify-templates/vo.md b/target/classes/notify-templates/vo.md index 1289030..359630e 100644 --- a/target/classes/notify-templates/vo.md +++ b/target/classes/notify-templates/vo.md @@ -61,3 +61,13 @@ ### 类转换影响 > 未开启检测 ``` + +--- + +## 占位符 + +| 占位符 | 来源 | +|--------|------| +| 路径 | Git 相对路径,`ClassChangeReport.sourceFile` | +| 类说明 | `@Schema` / `@ApiModel` / 类 Javadoc | +| 字段说明 | `@Schema` / `@ApiModelProperty` / 字段 Javadoc(见 [field-description.md](field-description.md)) |