diff --git a/.gitea/config/cache-schema-check-config.yaml b/.gitea/config/serialization-schema-check-config.yaml similarity index 84% rename from .gitea/config/cache-schema-check-config.yaml rename to .gitea/config/serialization-schema-check-config.yaml index 86efd4c..ed07882 100644 --- a/.gitea/config/cache-schema-check-config.yaml +++ b/.gitea/config/serialization-schema-check-config.yaml @@ -1,10 +1,10 @@ # ============================================================ -# 缓存序列化结构变更检测 — 业务仓库配置 +# 序列化结构变更检测 — 业务仓库配置 # ============================================================ # 说明: # - 本配置文件为业务覆盖配置,会与 jar 内 default-config.yaml 深度合并 # - 未声明的项沿用工具内置默认值(忽略规则、检测模式等) -# - 当前实现以 Redis 写入检测为主,后续可扩展其他缓存 +# - 当前以 Redis 缓存写入检测为主;MQ(RocketMQ/Kafka)方案见 docs/MQ序列化结构检测方案.md # 总开关 true-执行检测 false-跳过检测(流水线直接通过,不发通知) enabled: true @@ -17,7 +17,7 @@ notify: enabled: true webhook_url: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=fa14f0b3-e01a-40f6-96bd-e18beb94e85e notify_on_clean: false - title_prefix: "【缓存结构变更】" + title_prefix: "【序列化结构变更】" # 观察期:先只扫描 jnpf-tenant 模块,稳定后改为 include_modules: [] include_modules: diff --git a/.gitea/workflows/cache-schema-check.yaml b/.gitea/workflows/serialization-schema-check.yaml similarity index 81% rename from .gitea/workflows/cache-schema-check.yaml rename to .gitea/workflows/serialization-schema-check.yaml index d7fc265..ac0d288 100644 --- a/.gitea/workflows/cache-schema-check.yaml +++ b/.gitea/workflows/serialization-schema-check.yaml @@ -1,17 +1,17 @@ -name: 缓存序列化结构检查 -run-name: ${{ gitea.actor }}的缓存结构检查 +name: 序列化结构检查 +run-name: ${{ gitea.actor }}的序列化结构检查 on: push: workflow_dispatch: env: - # cache-schema-checker 私库坐标:com.codechecker:cache-schema-checker:1.0.0 - CACHE_SCHEMA_CHECKER_VERSION: "1.0.0" - CACHE_SCHEMA_CHECKER_REPO_URL: "http://192.168.3.25:18081/nexus/repository/maven-releases" + # serialization-schema-checker 私库坐标:com.codechecker:serialization-schema-checker:1.0.0 + SERIALIZATION_SCHEMA_CHECKER_VERSION: "1.0.0" + SERIALIZATION_SCHEMA_CHECKER_REPO_URL: "http://192.168.3.25:18081/nexus/repository/maven-releases" jobs: - cache-schema-check: + serialization-schema-check: if: ${{ gitea.ref != 'refs/heads/pre' && gitea.ref != 'refs/heads/dev' && gitea.ref != 'refs/heads/master-2.0' }} runs-on: jdk11 steps: @@ -27,30 +27,30 @@ jobs: git clone --depth 1 --single-branch --branch "${BRANCH}" "${REPO_URL}" . git checkout -B "${BRANCH}" "${NEW_SHA}" - echo "${NEW_SHA}" > /tmp/cache-schema-new-sha.txt + echo "${NEW_SHA}" > /tmp/serialization-schema-new-sha.txt - name: 检查配置文件 run: | - if [ ! -f .gitea/config/cache-schema-check-config.yaml ]; then - echo "错误: 缺少 .gitea/config/cache-schema-check-config.yaml" + if [ ! -f .gitea/config/serialization-schema-check-config.yaml ]; then + echo "错误: 缺少 .gitea/config/serialization-schema-check-config.yaml" exit 1 fi # 顶层总开关 enabled: false 时跳过后续步骤(与 notify.enabled 区分,仅匹配行首) - if grep -Eq '^enabled:[[:space:]]*false([[:space:]]|#|$)' .gitea/config/cache-schema-check-config.yaml; then - echo "总开关 enabled=false,跳过缓存结构检查" - touch /tmp/cache-schema-check.skip + if grep -Eq '^enabled:[[:space:]]*false([[:space:]]|#|$)' .gitea/config/serialization-schema-check-config.yaml; then + echo "总开关 enabled=false,跳过序列化结构检查" + touch /tmp/serialization-schema-check.skip fi - - name: 从 Nexus 私库下载 cache-schema-checker + - name: 从 Nexus 私库下载 serialization-schema-checker run: | - if [ -f /tmp/cache-schema-check.skip ]; then + if [ -f /tmp/serialization-schema-check.skip ]; then echo "总开关已关闭,跳过下载" exit 0 fi - GROUP_PATH="com/codechecker/cache-schema-checker" - JAR_NAME="cache-schema-checker-${CACHE_SCHEMA_CHECKER_VERSION}.jar" - JAR_URL="${CACHE_SCHEMA_CHECKER_REPO_URL}/${GROUP_PATH}/${CACHE_SCHEMA_CHECKER_VERSION}/${JAR_NAME}" + GROUP_PATH="com/codechecker/serialization-schema-checker" + JAR_NAME="serialization-schema-checker-${SERIALIZATION_SCHEMA_CHECKER_VERSION}.jar" + JAR_URL="${SERIALIZATION_SCHEMA_CHECKER_REPO_URL}/${GROUP_PATH}/${SERIALIZATION_SCHEMA_CHECKER_VERSION}/${JAR_NAME}" JAR_PATH="/tmp/${JAR_NAME}" echo "下载: ${JAR_URL}" @@ -72,25 +72,25 @@ jobs: - name: 验证 JDK run: | - if [ -f /tmp/cache-schema-check.skip ]; then + if [ -f /tmp/serialization-schema-check.skip ]; then echo "总开关已关闭,跳过" exit 0 fi echo "Java: $(java -version 2>&1 | head -1)" - - name: 执行缓存序列化结构检测 + - name: 执行序列化结构检测 env: # push 前 tip;新分支首次 push 时为全 0。workflow_dispatch 可能为空,下方会回退。 PUSH_BEFORE: ${{ gitea.event.before }} # push 事件携带的 commits 列表(JSON);用于准确统计 commit 数(不受浅克隆影响) PUSH_COMMITS_JSON: ${{ toJson(gitea.event.commits) }} run: | - if [ -f /tmp/cache-schema-check.skip ]; then + if [ -f /tmp/serialization-schema-check.skip ]; then echo "总开关已关闭,跳过检测" exit 0 fi - NEW_SHA=$(cat /tmp/cache-schema-new-sha.txt) + NEW_SHA=$(cat /tmp/serialization-schema-new-sha.txt) OLD_SHA="${PUSH_BEFORE}" # 新分支首次 push(before 全 0)→ 跳过 @@ -199,8 +199,8 @@ jobs: COMMIT_TIME=$(git log -1 --format=%cd --date=format:'%Y-%m-%d %H:%M:%S' "${NEW_SHA}") - java -jar "/tmp/cache-schema-checker-${CACHE_SCHEMA_CHECKER_VERSION}.jar" \ - --config .gitea/config/cache-schema-check-config.yaml \ + java -jar "/tmp/serialization-schema-checker-${SERIALIZATION_SCHEMA_CHECKER_VERSION}.jar" \ + --config .gitea/config/serialization-schema-check-config.yaml \ --repo-root . \ --old-sha "$OLD_SHA" \ --new-sha "$NEW_SHA" \ diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 880e7f1..b23ff08 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,4 +1,4 @@ - + @@ -6,11 +6,11 @@ - + - + diff --git a/docs/CI集成说明.md b/docs/CI集成说明.md index bab17d7..e4ed4fe 100644 --- a/docs/CI集成说明.md +++ b/docs/CI集成说明.md @@ -1,4 +1,4 @@ -# 缓存序列化结构检测 — CI 集成说明 +# 序列化结构检测 — CI 集成说明 --- @@ -11,7 +11,7 @@ Gitea Actions 触发 ↓ 浅克隆业务仓库 tip(depth=1)+ 按需取 push 前 tip(before) ↓ -从 Nexus 下载 cache-schema-checker.jar +从 Nexus 下载 serialization-schema-checker.jar ↓ java -jar 执行(对比 before → after,累计 diff) ↓ @@ -46,7 +46,7 @@ mode=block 且含任意结构变更 → exit 1(流水线失败) |----|------| | Gitea Runner | 标签 `jdk11`,已安装 Java 11 | | Nexus 私库 | 可访问 `http://192.168.3.25:18081/nexus/repository/maven-releases` | -| 工具 JAR | `com.codechecker:cache-schema-checker:1.0.0` 已发布 | +| 工具 JAR | `com.codechecker:serialization-schema-checker:1.0.0` 已发布 | --- @@ -58,18 +58,18 @@ mode=block 且含任意结构变更 → exit 1(流水线失败) jnpf-java-cloud/ ├── .gitea/ │ ├── workflows/ -│ │ └── cache-schema-check.yaml # 流水线 +│ │ └── serialization-schema-check.yaml # 流水线 │ └── config/ -│ └── cache-schema-check-config.yaml # 检测配置 +│ └── serialization-schema-check-config.yaml # 检测配置 ``` -请以本仓库 `.gitea/workflows/cache-schema-check.yaml` 为模板同步到业务仓。 +请以本仓库 `.gitea/workflows/serialization-schema-check.yaml` 为模板同步到业务仓。 --- ## 4. 流水线模板(要点) -完整可运行版本见:`.gitea/workflows/cache-schema-check.yaml`。 +完整可运行版本见:`.gitea/workflows/serialization-schema-check.yaml`。 核心逻辑摘要: @@ -84,7 +84,7 @@ git fetch --depth 1 origin "$OLD_SHA" # 优先 # 或 git fetch --deepen N # 兜底 # 4) 执行 -java -jar cache-schema-checker-1.0.0.jar \ +java -jar serialization-schema-checker-1.0.0.jar \ --old-sha "$OLD_SHA" \ --new-sha "$NEW_SHA" \ ... @@ -98,7 +98,7 @@ java -jar cache-schema-checker-1.0.0.jar \ |--------|------|------| | `demo.yaml` (AI代码质量分析) | AI Code Review | 并行,互不影响 | | `code-check` (CodeChecker) | 通用变更检测 | **同模式**,可并列执行 | -| `cache-schema-check` | 缓存结构检测 | 新增 | +| `serialization-schema-check` | 缓存结构检测 | 新增 | --- @@ -116,9 +116,9 @@ mvn clean deploy -DskipTests 发布产物: ```text -com/codechecker/cache-schema-checker/1.0.0/ - ├── cache-schema-checker-1.0.0.jar # 可执行 fat-jar - └── cache-schema-checker-1.0.0.pom +com/codechecker/serialization-schema-checker/1.0.0/ + ├── serialization-schema-checker-1.0.0.jar # 可执行 fat-jar + └── serialization-schema-checker-1.0.0.pom ``` --- @@ -157,8 +157,8 @@ com/codechecker/cache-schema-checker/1.0.0/ OLD_SHA=$(git rev-parse origin/$(git branch --show-current)~3) # 示例:假设 ahead 3 NEW_SHA=$(git rev-parse HEAD) -java -jar /path/to/cache-schema-checker-1.0.0.jar \ - --config .gitea/config/cache-schema-check-config.yaml \ +java -jar /path/to/serialization-schema-checker-1.0.0.jar \ + --config .gitea/config/serialization-schema-check-config.yaml \ --repo-root . \ --old-sha "$OLD_SHA" \ --new-sha "$NEW_SHA" \ diff --git a/docs/MQ序列化结构检测方案.md b/docs/MQ序列化结构检测方案.md index 7e83fb3..c379ef1 100644 --- a/docs/MQ序列化结构检测方案.md +++ b/docs/MQ序列化结构检测方案.md @@ -3,7 +3,7 @@ > 版本:v0.2 > 日期:2026-07-15 > 状态:**方案已落地(含 Kafka),开发未启动** -> 关联:复用 `cache-schema-checker` 的 Schema 提取、Diff、企微通知与 CI 框架 +> 关联:复用 `serialization-schema-checker` 的 Schema 提取、Diff、企微通知与 CI 框架 > 业务样本仓:`jnpf-java-cloud`(**RocketMQ + Kafka**) --- @@ -124,7 +124,7 @@ public void handleMessage(String message) { ### 3.1 产品形态 -并入现有 `cache-schema-checker`(或后续更名 `serialization-schema-checker`): +并入现有 `serialization-schema-checker`: - 同一 CLI / 流水线 / Schema Diff / 企微模板 - 配置增加 `mq_patterns`(含 RocketMQ + Kafka) diff --git a/docs/实施方案.md b/docs/实施方案.md index 05d90ef..d97b515 100644 --- a/docs/实施方案.md +++ b/docs/实施方案.md @@ -104,12 +104,12 @@ schemaCheck 仓库 ├── 开发 Java 分析工具 ├── mvn package 打 fat-jar - ├── 发布到 Nexus:com.codechecker:cache-schema-checker:{version} + ├── 发布到 Nexus:com.codechecker:serialization-schema-checker:{version} └── 提供默认配置模板 jnpf-java-cloud 仓库 - ├── .gitea/workflows/cache-schema-check.yaml - ├── .gitea/config/cache-schema-check-config.yaml + ├── .gitea/workflows/serialization-schema-check.yaml + ├── .gitea/config/serialization-schema-check-config.yaml └── push 时下载 jar 并执行检测 ``` @@ -119,11 +119,11 @@ jnpf-java-cloud 仓库 flowchart TB subgraph Gitea["Gitea Push Pipeline"] A[push 事件] --> B[浅克隆 old/new 提交] - B --> C[下载 cache-schema-checker.jar] + B --> C[下载 serialization-schema-checker.jar] C --> D[java -jar 执行检测] end - subgraph Checker["cache-schema-checker (JDK 11)"] + subgraph Checker["serialization-schema-checker (JDK 11)"] D --> E[GitDiffScanner] E --> F[RedisWritePointDetector] F --> G[JavaSchemaExtractor] @@ -196,8 +196,8 @@ schemaCheck/ │ ├── resources/fixtures/{tenant,lock,template}/ │ └── java/... ├── .gitea/ -│ ├── workflows/cache-schema-check.yaml -│ └── config/cache-schema-check-config.yaml +│ ├── workflows/serialization-schema-check.yaml +│ └── config/serialization-schema-check-config.yaml └── target/ # 构建产物 ``` @@ -205,11 +205,11 @@ schemaCheck/ ```xml com.codechecker -cache-schema-checker +serialization-schema-checker 1.0.0 ``` -打包为 **shaded/fat jar**,主类:`com.codechecker.cache.cli.CacheSchemaCheckerMain` +打包为 **shaded/fat jar**,主类:`com.codechecker.cache.cli.SerializationSchemaCheckerMain` --- @@ -218,8 +218,8 @@ schemaCheck/ ### 6.1 CLI 参数 ```bash -java -jar cache-schema-checker-1.0.0.jar \ - --config .gitea/config/cache-schema-check-config.yaml \ +java -jar serialization-schema-checker-1.0.0.jar \ + --config .gitea/config/serialization-schema-check-config.yaml \ --repo-root /path/to/jnpf-java-cloud \ --old-sha abc123 \ --new-sha def456 \ @@ -256,7 +256,7 @@ java -jar cache-schema-checker-1.0.0.jar \ #### Step 1:加载配置 -读取 `cache-schema-check-config.yaml`,合并默认值(见 `docs/配置说明.md`)。 +读取 `serialization-schema-check-config.yaml`,合并默认值(见 `docs/配置说明.md`)。 #### Step 2:Git Diff 扫描 @@ -444,15 +444,15 @@ manual_mappings: | 层级 | 位置 | 职责 | |------|------|------| | 默认配置 | 工具 jar 内 `default-config.yaml` | 检测模式、忽略规则等默认值 | -| 业务覆盖 | `jnpf-java-cloud/.gitea/config/cache-schema-check-config.yaml` | mode、notify、include_modules、manual_mappings | +| 业务覆盖 | `jnpf-java-cloud/.gitea/config/serialization-schema-check-config.yaml` | mode、notify、include_modules、manual_mappings | 合并规则:**业务配置覆盖默认配置**,未声明的项沿用默认值。 CLI 调用: ```bash -java -jar cache-schema-checker.jar \ - --config .gitea/config/cache-schema-check-config.yaml \ +java -jar serialization-schema-checker.jar \ + --config .gitea/config/serialization-schema-check-config.yaml \ ... ``` @@ -482,13 +482,13 @@ notify: 详见 `docs/CI集成说明.md`。核心流程: ```yaml -# jnpf-java-cloud/.gitea/workflows/cache-schema-check.yaml(要点) +# jnpf-java-cloud/.gitea/workflows/serialization-schema-check.yaml(要点) # 检出:浅克隆 tip(depth 1) # 检测:--old-sha = gitea.event.before,--new-sha = gitea.sha # 按需 fetch before 提交对象,覆盖一次 push 的多 commit 累计 diff ``` -完整模板见 `docs/CI集成说明.md` / `.gitea/workflows/cache-schema-check.yaml`。 +完整模板见 `docs/CI集成说明.md` / `.gitea/workflows/serialization-schema-check.yaml`。 --- @@ -600,7 +600,7 @@ notify: | # | 决策项 | 结论 | |---|--------|------| | 1 | 阻断范围 | `block` 模式下 **任意结构变更均阻断**(exit 1) | -| 2 | 发布坐标 | 独立产物 `com.codechecker:cache-schema-checker:1.0.0` | +| 2 | 发布坐标 | 独立产物 `com.codechecker:serialization-schema-checker:1.0.0` | | 3 | 配置归属 | **双层配置**:jar 内 `default-config.yaml` + 业务仓覆盖合并 | | 4 | 上线策略 | 先 `notify` ,稳定后手动切 `block` | | 5 | 检测范围 | **仅 `src/main/java`**,不扫描测试代码 | diff --git a/docs/配置说明.md b/docs/配置说明.md index 922069f..7e44812 100644 --- a/docs/配置说明.md +++ b/docs/配置说明.md @@ -1,8 +1,8 @@ -# 缓存序列化结构检测 — 配置说明 +# 序列化结构检测 — 配置说明 -> **双层配置**:工具 jar 内置 `default-config.yaml`(默认) + 业务仓库 `.gitea/config/cache-schema-check-config.yaml`(覆盖) -> 工具坐标:`com.codechecker:cache-schema-checker:1.0.0` -> 主类:`com.codechecker.cache.cli.CacheSchemaCheckerMain` +> **双层配置**:工具 jar 内置 `default-config.yaml`(默认) + 业务仓库 `.gitea/config/serialization-schema-check-config.yaml`(覆盖) +> 工具坐标:`com.codechecker:serialization-schema-checker:1.0.0` +> 主类:`com.codechecker.cache.cli.SerializationSchemaCheckerMain` --- @@ -11,7 +11,7 @@ ```text jar 内 default-config.yaml(工具仓维护) ↓ 深度合并 -业务仓 cache-schema-check-config.yaml(业务仓维护) +业务仓 serialization-schema-check-config.yaml(业务仓维护) ↓ 最终生效配置 ``` @@ -23,7 +23,7 @@ jar 内 default-config.yaml(工具仓维护) ### 1.1 业务仓最小配置示例 ```yaml -# jnpf-java-cloud/.gitea/config/cache-schema-check-config.yaml +# jnpf-java-cloud/.gitea/config/serialization-schema-check-config.yaml enabled: true mode: notify @@ -78,7 +78,7 @@ notify: # 无变更时是否也发通知(一般 false) notify_on_clean: false # 消息标题前缀 - title_prefix: "[缓存结构变更]" + title_prefix: "[序列化结构变更]" # 忽略规则 ignore: @@ -182,7 +182,7 @@ mode: block | `webhook_url` | string | `""` | 企微机器人 Webhook 完整 URL(优先) | | `webhook_env` | string | — | 兼容旧字段;值为 `http` 开头时当作 URL | | `notify_on_clean` | boolean | false | 无变更时是否通知 | -| `title_prefix` | string | [缓存结构变更] | 消息标题前缀 | +| `title_prefix` | string | [序列化结构变更] | 消息标题前缀 | ### 3.4 ignore.key_patterns @@ -299,7 +299,7 @@ suppressions: ### 5.3 示例(已解析 key) ```markdown -## [缓存结构变更] jnpf-java-cloud +## [序列化结构变更] jnpf-java-cloud > **分支**: code/redis_change_detection_v1.0 > **提交**: cedd161c → 67c8a6eb diff --git a/pom.xml b/pom.xml index 49c417e..f49a607 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ 4.0.0 com.codechecker - cache-schema-checker + serialization-schema-checker 1.0.0 jar - cache-schema-checker - 基于 JavaParser 的缓存 value 序列化结构变更检测器 + serialization-schema-checker + 基于 JavaParser 的缓存/MQ value 序列化结构变更检测器 11 @@ -74,7 +74,7 @@ - cache-schema-checker-${project.version} + serialization-schema-checker-${project.version} org.apache.maven.plugins @@ -101,7 +101,7 @@ - com.codechecker.cache.cli.CacheSchemaCheckerMain + com.codechecker.cache.cli.SerializationSchemaCheckerMain diff --git a/src/main/java/com/codechecker/cache/cli/CacheSchemaCheckerMain.java b/src/main/java/com/codechecker/cache/cli/SerializationSchemaCheckerMain.java similarity index 78% rename from src/main/java/com/codechecker/cache/cli/CacheSchemaCheckerMain.java rename to src/main/java/com/codechecker/cache/cli/SerializationSchemaCheckerMain.java index 60ab7d7..5f9c384 100644 --- a/src/main/java/com/codechecker/cache/cli/CacheSchemaCheckerMain.java +++ b/src/main/java/com/codechecker/cache/cli/SerializationSchemaCheckerMain.java @@ -17,11 +17,11 @@ import java.util.concurrent.Callable; /** * 命令行入口。退出码:0 通过 / 1 阻断 / 2 执行错误。 */ -@Command(name = "cache-schema-checker", +@Command(name = "serialization-schema-checker", mixinStandardHelpOptions = true, - version = "cache-schema-checker 1.0.0", - description = "检测两次提交间缓存 value 序列化结构变更并通过企微机器人通知。") -public class CacheSchemaCheckerMain implements Callable { + version = "serialization-schema-checker 1.0.0", + description = "检测两次提交间缓存/MQ 等 value 序列化结构变更并通过企微机器人通知。") +public class SerializationSchemaCheckerMain implements Callable { @Option(names = "--config", required = true, description = "业务仓库检测配置文件路径") private Path configPath; @@ -56,12 +56,12 @@ public class CacheSchemaCheckerMain implements Callable { CheckerConfig config = ConfigLoader.load(configPath); if (!config.isEnabled()) { - System.out.println("[cache-schema-checker] 总开关 enabled=false,跳过检测。"); + System.out.println("[serialization-schema-checker] 总开关 enabled=false,跳过检测。"); return 0; } if (oldSha == null || oldSha.trim().isEmpty()) { - System.out.println("[cache-schema-checker] 无对比基准提交,跳过检测。"); + System.out.println("[serialization-schema-checker] 无对比基准提交,跳过检测。"); return 0; } @@ -75,7 +75,6 @@ public class CacheSchemaCheckerMain implements Callable { report.setRepository(repository != null ? repository : root.getFileName().toString()); ReportBuilder builder = new ReportBuilder(config.getNotify().getTitlePrefix()); - // CI:字段明细 + 完整企微 Markdown System.out.println(builder.toConsole(report)); boolean shouldNotify = config.getNotify().isEnabled() @@ -84,24 +83,24 @@ public class CacheSchemaCheckerMain implements Callable { String webhook = config.getNotify().getWebhookUrl(); List messages = builder.toWeComMessages(report); int ok = new WeComNotifier().sendMarkdownMessages(webhook, messages); - System.out.println("[cache-schema-checker] 企微通知发送: " + System.out.println("[serialization-schema-checker] 企微通知发送: " + ok + "/" + messages.size() + (messages.size() > 1 ? "(已按 key 拆分)" : "")); } if (report.isBlocked()) { - System.out.println("[cache-schema-checker] block 模式命中,流水线将被阻断(exit 1)。"); + System.out.println("[serialization-schema-checker] block 模式命中,流水线将被阻断(exit 1)。"); } return report.getExitCode(); } catch (Exception e) { - System.err.println("[cache-schema-checker] 执行错误: " + e.getMessage()); + System.err.println("[serialization-schema-checker] 执行错误: " + e.getMessage()); e.printStackTrace(); return 2; } } public static void main(String[] args) { - int exitCode = new CommandLine(new CacheSchemaCheckerMain()).execute(args); + int exitCode = new CommandLine(new SerializationSchemaCheckerMain()).execute(args); System.exit(exitCode); } } diff --git a/src/main/java/com/codechecker/cache/config/CheckerConfig.java b/src/main/java/com/codechecker/cache/config/CheckerConfig.java index 3390560..dae4665 100644 --- a/src/main/java/com/codechecker/cache/config/CheckerConfig.java +++ b/src/main/java/com/codechecker/cache/config/CheckerConfig.java @@ -41,7 +41,7 @@ public class CheckerConfig { /** 企微机器人 Webhook 完整 URL */ private String webhookUrl = ""; private boolean notifyOnClean = false; - private String titlePrefix = "[缓存结构变更]"; + private String titlePrefix = "[序列化结构变更]"; public boolean isEnabled() { return enabled; diff --git a/src/main/java/com/codechecker/cache/config/ConfigLoader.java b/src/main/java/com/codechecker/cache/config/ConfigLoader.java index 8029ce3..0eb813c 100644 --- a/src/main/java/com/codechecker/cache/config/ConfigLoader.java +++ b/src/main/java/com/codechecker/cache/config/ConfigLoader.java @@ -87,7 +87,7 @@ public final class ConfigLoader { n.setEnabled(bool(notify, "enabled", true)); n.setWebhookUrl(resolveWebhookUrl(notify)); n.setNotifyOnClean(bool(notify, "notify_on_clean", false)); - n.setTitlePrefix(str(notify, "title_prefix", "[缓存结构变更]")); + n.setTitlePrefix(str(notify, "title_prefix", "[序列化结构变更]")); Map ignore = asMap(map.get("ignore")); CheckerConfig.Ignore ig = config.getIgnore(); diff --git a/src/main/java/com/codechecker/cache/report/ReportBuilder.java b/src/main/java/com/codechecker/cache/report/ReportBuilder.java index 7317cb2..eedfff8 100644 --- a/src/main/java/com/codechecker/cache/report/ReportBuilder.java +++ b/src/main/java/com/codechecker/cache/report/ReportBuilder.java @@ -28,7 +28,7 @@ public class ReportBuilder { private final String titlePrefix; public ReportBuilder(String titlePrefix) { - this.titlePrefix = titlePrefix == null ? "[缓存结构变更]" : titlePrefix; + this.titlePrefix = titlePrefix == null ? "[序列化结构变更]" : titlePrefix; } /** @@ -63,7 +63,7 @@ public class ReportBuilder { String header = buildHeader(report); List bodies = buildKeyBodies(report); if (bodies.isEmpty()) { - return Collections.singletonList(header + "未检测到缓存序列化结构变更。\n"); + return Collections.singletonList(header + "未检测到序列化结构变更。\n"); } StringBuilder combined = new StringBuilder(header); @@ -182,7 +182,7 @@ public class ReportBuilder { public String toConsole(CheckReport report) { StringBuilder sb = new StringBuilder(); if (!report.hasChanges()) { - sb.append("未检测到缓存序列化结构变更。\n"); + sb.append("未检测到序列化结构变更。\n"); return sb.toString(); } diff --git a/src/main/resources/default-config.yaml b/src/main/resources/default-config.yaml index 9e156e7..9e16dc2 100644 --- a/src/main/resources/default-config.yaml +++ b/src/main/resources/default-config.yaml @@ -1,4 +1,4 @@ -# cache-schema-checker 内置默认配置 +# serialization-schema-checker 内置默认配置 # 业务仓库通过 --config 指定的配置会与本文件深度合并(业务配置优先)。 # 总开关:false 时不执行检测、不发通知、流水线直接通过 @@ -19,7 +19,7 @@ notify: enabled: true webhook_url: "" notify_on_clean: false - title_prefix: "[缓存结构变更]" + title_prefix: "[序列化结构变更]" # 忽略规则 ignore: diff --git a/src/test/java/com/codechecker/cache/report/ReportBuilderTest.java b/src/test/java/com/codechecker/cache/report/ReportBuilderTest.java index 49daf99..41ebfee 100644 --- a/src/test/java/com/codechecker/cache/report/ReportBuilderTest.java +++ b/src/test/java/com/codechecker/cache/report/ReportBuilderTest.java @@ -56,7 +56,7 @@ class ReportBuilderTest { key.getFieldDetails().add(addedErr); report.getKeyChanges().add(key); - String md = new ReportBuilder("[缓存结构变更]").toMarkdown(report); + String md = new ReportBuilder("[序列化结构变更]").toMarkdown(report); assertTrue(md.contains("- Key --> `saas:period-config:migration:current`")); assertFalse(md.contains("(key 无法解析)")); @@ -133,7 +133,7 @@ class ReportBuilderTest { key.getFieldDetails().add(detail); report.getKeyChanges().add(key); - String console = new ReportBuilder("[缓存结构变更]").toConsole(report); + String console = new ReportBuilder("[序列化结构变更]").toConsole(report); assertTrue(console.contains("======== 字段明细 ========")); assertTrue(console.contains("**删除字段**: x")); assertTrue(console.contains("\"x\":\"\"")); @@ -161,7 +161,7 @@ class ReportBuilderTest { key.getFieldDetails().add(added); report.getKeyChanges().add(key); - String md = new ReportBuilder("[缓存结构变更]").toMarkdown(report); + String md = new ReportBuilder("[序列化结构变更]").toMarkdown(report); assertTrue(md.contains("- Key --> `req.getKey()` (key 无法解析)")); assertTrue(md.contains("> **位置**: `ClockInXxxService#export:128`")); assertTrue(md.contains("> **类型**: `List`")); @@ -185,7 +185,7 @@ class ReportBuilderTest { report.getKeyChanges().add(simpleKey("k-a", "{\"a\":\"\"}", "{\"a\":\"\",\"x\":\"\"}", "x")); report.getKeyChanges().add(simpleKey("k-b", "{\"b\":\"\"}", "{\"b\":\"\",\"y\":\"\"}", "y")); - List messages = new ReportBuilder("[缓存结构变更]").toWeComMessages(report); + List messages = new ReportBuilder("[序列化结构变更]").toWeComMessages(report); assertEquals(1, messages.size()); assertTrue(messages.get(0).contains("k-a")); assertTrue(messages.get(0).contains("k-b")); @@ -200,7 +200,7 @@ class ReportBuilderTest { report.getKeyChanges().add(simpleKey("fat-key-1", fat, fat + "1", null)); report.getKeyChanges().add(simpleKey("fat-key-2", fat, fat + "2", null)); - List messages = new ReportBuilder("[缓存结构变更]").toWeComMessages(report); + List messages = new ReportBuilder("[序列化结构变更]").toWeComMessages(report); assertEquals(2, messages.size(), "超长应按 key 拆成 2 条"); assertTrue(messages.get(0).contains("fat-key-1")); assertFalse(messages.get(0).contains("fat-key-2")); @@ -209,10 +209,10 @@ class ReportBuilderTest { assertTrue(ReportBuilder.utf8Bytes(messages.get(0)) <= ReportBuilder.WECOM_MARKDOWN_MAX_BYTES); assertTrue(ReportBuilder.utf8Bytes(messages.get(1)) <= ReportBuilder.WECOM_MARKDOWN_MAX_BYTES); // 抬头在每条中重复 - assertTrue(messages.get(0).contains("## [缓存结构变更] jnpf-java-cloud")); - assertTrue(messages.get(1).contains("## [缓存结构变更] jnpf-java-cloud")); + assertTrue(messages.get(0).contains("## [序列化结构变更] jnpf-java-cloud")); + assertTrue(messages.get(1).contains("## [序列化结构变更] jnpf-java-cloud")); - String console = new ReportBuilder("[缓存结构变更]").toConsole(report); + String console = new ReportBuilder("[序列化结构变更]").toConsole(report); assertTrue(console.contains("超长已按 key 拆为 2 条")); }