feat: 项目整体命名修改cache-schema-checker
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
All checks were successful
缓存序列化结构检查 / cache-schema-check (push) Has been skipped
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.analyze;
|
||||
package com.codechecker.cache.analyze;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.analyze;
|
||||
package com.codechecker.cache.analyze;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
package com.codechecker.redis.analyze;
|
||||
package com.codechecker.cache.analyze;
|
||||
|
||||
import com.codechecker.redis.config.CheckerConfig;
|
||||
import com.codechecker.redis.detector.RedisWritePointDetector;
|
||||
import com.codechecker.redis.detector.WritePoint;
|
||||
import com.codechecker.redis.diff.ChangeType;
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.SchemaDiffer;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import com.codechecker.redis.git.GitDiffScanner;
|
||||
import com.codechecker.redis.git.GitException;
|
||||
import com.codechecker.redis.report.CheckReport;
|
||||
import com.codechecker.redis.report.KeyStructureChange;
|
||||
import com.codechecker.redis.schema.JavaSchemaExtractor;
|
||||
import com.codechecker.redis.schema.SkeletonJsonRenderer;
|
||||
import com.codechecker.redis.schema.SourceIndex;
|
||||
import com.codechecker.redis.schema.TypeSchema;
|
||||
import com.codechecker.cache.config.CheckerConfig;
|
||||
import com.codechecker.cache.detector.RedisWritePointDetector;
|
||||
import com.codechecker.cache.detector.WritePoint;
|
||||
import com.codechecker.cache.diff.ChangeType;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.SchemaDiffer;
|
||||
import com.codechecker.cache.diff.Severity;
|
||||
import com.codechecker.cache.git.GitDiffScanner;
|
||||
import com.codechecker.cache.git.GitException;
|
||||
import com.codechecker.cache.report.CheckReport;
|
||||
import com.codechecker.cache.report.KeyStructureChange;
|
||||
import com.codechecker.cache.schema.JavaSchemaExtractor;
|
||||
import com.codechecker.cache.schema.SkeletonJsonRenderer;
|
||||
import com.codechecker.cache.schema.SourceIndex;
|
||||
import com.codechecker.cache.schema.TypeSchema;
|
||||
import com.github.javaparser.StaticJavaParser;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import com.github.javaparser.ast.body.TypeDeclaration;
|
||||
@@ -144,7 +144,7 @@ public class SchemaCheckAnalyzer {
|
||||
SchemaChange c = new SchemaChange(ChangeType.WRITE_POINT_ADDED);
|
||||
c.setKeyPattern(nw.getResolvedKeyPattern());
|
||||
c.setWriteLocation(nw.location());
|
||||
c.setMessage("新增 Redis 写入点,value 类型: " + shortType(nw.getResolvedValueType()));
|
||||
c.setMessage("新增缓存写入点,value 类型: " + shortType(nw.getResolvedValueType()));
|
||||
allChanges.add(c);
|
||||
TypeSchema newSchema = extractorNew.extract(nw.getResolvedValueType(), nw.isRootArray());
|
||||
mergeKeyChange(keyChanges, nw.getResolvedKeyPattern(),
|
||||
@@ -163,7 +163,7 @@ public class SchemaCheckAnalyzer {
|
||||
SchemaChange c = new SchemaChange(ChangeType.WRITE_POINT_REMOVED);
|
||||
c.setKeyPattern(ow.getResolvedKeyPattern());
|
||||
c.setWriteLocation(ow.location());
|
||||
c.setMessage("删除 Redis 写入点,原 value 类型: " + shortType(ow.getResolvedValueType()));
|
||||
c.setMessage("删除缓存写入点,原 value 类型: " + shortType(ow.getResolvedValueType()));
|
||||
allChanges.add(c);
|
||||
TypeSchema oldSchema = extractorOld.extract(ow.getResolvedValueType(), ow.isRootArray());
|
||||
mergeKeyChange(keyChanges, ow.getResolvedKeyPattern(),
|
||||
@@ -1,27 +1,26 @@
|
||||
package com.codechecker.redis.cli;
|
||||
package com.codechecker.cache.cli;
|
||||
|
||||
import com.codechecker.redis.analyze.SchemaCheckAnalyzer;
|
||||
import com.codechecker.redis.config.CheckerConfig;
|
||||
import com.codechecker.redis.config.ConfigLoader;
|
||||
import com.codechecker.redis.notify.WeComNotifier;
|
||||
import com.codechecker.redis.report.CheckReport;
|
||||
import com.codechecker.redis.report.ReportBuilder;
|
||||
import com.codechecker.cache.analyze.SchemaCheckAnalyzer;
|
||||
import com.codechecker.cache.config.CheckerConfig;
|
||||
import com.codechecker.cache.config.ConfigLoader;
|
||||
import com.codechecker.cache.notify.WeComNotifier;
|
||||
import com.codechecker.cache.report.CheckReport;
|
||||
import com.codechecker.cache.report.ReportBuilder;
|
||||
import picocli.CommandLine;
|
||||
import picocli.CommandLine.Command;
|
||||
import picocli.CommandLine.Option;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
/**
|
||||
* 命令行入口。退出码:0 通过 / 1 阻断 / 2 执行错误。
|
||||
*/
|
||||
@Command(name = "redis-schema-checker",
|
||||
@Command(name = "cache-schema-checker",
|
||||
mixinStandardHelpOptions = true,
|
||||
version = "redis-schema-checker 1.0.0",
|
||||
description = "检测两次提交间 Redis value 序列化结构变更并通过企微机器人通知。")
|
||||
public class RedisSchemaCheckerMain implements Callable<Integer> {
|
||||
version = "cache-schema-checker 1.0.0",
|
||||
description = "检测两次提交间缓存 value 序列化结构变更并通过企微机器人通知。")
|
||||
public class CacheSchemaCheckerMain implements Callable<Integer> {
|
||||
|
||||
@Option(names = "--config", required = true, description = "业务仓库检测配置文件路径")
|
||||
private Path configPath;
|
||||
@@ -56,12 +55,12 @@ public class RedisSchemaCheckerMain implements Callable<Integer> {
|
||||
CheckerConfig config = ConfigLoader.load(configPath);
|
||||
|
||||
if (!config.isEnabled()) {
|
||||
System.out.println("[redis-schema-checker] 总开关 enabled=false,跳过检测。");
|
||||
System.out.println("[cache-schema-checker] 总开关 enabled=false,跳过检测。");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (oldSha == null || oldSha.trim().isEmpty()) {
|
||||
System.out.println("[redis-schema-checker] 无对比基准提交,跳过检测。");
|
||||
System.out.println("[cache-schema-checker] 无对比基准提交,跳过检测。");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -84,22 +83,22 @@ public class RedisSchemaCheckerMain implements Callable<Integer> {
|
||||
String webhook = config.getNotify().getWebhookUrl();
|
||||
String markdown = builder.toMarkdown(report);
|
||||
boolean ok = new WeComNotifier().sendMarkdown(webhook, markdown);
|
||||
System.out.println("[redis-schema-checker] 企微通知发送: " + (ok ? "成功" : "失败/跳过"));
|
||||
System.out.println("[cache-schema-checker] 企微通知发送: " + (ok ? "成功" : "失败/跳过"));
|
||||
}
|
||||
|
||||
if (report.isBlocked()) {
|
||||
System.out.println("[redis-schema-checker] block 模式命中,流水线将被阻断(exit 1)。");
|
||||
System.out.println("[cache-schema-checker] block 模式命中,流水线将被阻断(exit 1)。");
|
||||
}
|
||||
return report.getExitCode();
|
||||
} catch (Exception e) {
|
||||
System.err.println("[redis-schema-checker] 执行错误: " + e.getMessage());
|
||||
System.err.println("[cache-schema-checker] 执行错误: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int exitCode = new CommandLine(new RedisSchemaCheckerMain()).execute(args);
|
||||
int exitCode = new CommandLine(new CacheSchemaCheckerMain()).execute(args);
|
||||
System.exit(exitCode);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.config;
|
||||
package com.codechecker.cache.config;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -41,7 +41,7 @@ public class CheckerConfig {
|
||||
/** 企微机器人 Webhook 完整 URL */
|
||||
private String webhookUrl = "";
|
||||
private boolean notifyOnClean = false;
|
||||
private String titlePrefix = "[Redis结构变更]";
|
||||
private String titlePrefix = "[缓存结构变更]";
|
||||
|
||||
public boolean isEnabled() {
|
||||
return enabled;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.config;
|
||||
package com.codechecker.cache.config;
|
||||
|
||||
import org.yaml.snakeyaml.Yaml;
|
||||
|
||||
@@ -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", "[Redis结构变更]"));
|
||||
n.setTitlePrefix(str(notify, "title_prefix", "[缓存结构变更]"));
|
||||
|
||||
Map<String, Object> ignore = asMap(map.get("ignore"));
|
||||
CheckerConfig.Ignore ig = config.getIgnore();
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.codechecker.redis.detector;
|
||||
package com.codechecker.cache.detector;
|
||||
|
||||
import com.codechecker.redis.key.RedisKeyResolver;
|
||||
import com.codechecker.redis.schema.SourceIndex;
|
||||
import com.codechecker.cache.key.RedisKeyResolver;
|
||||
import com.codechecker.cache.schema.SourceIndex;
|
||||
import com.github.javaparser.StaticJavaParser;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import com.github.javaparser.ast.body.CallableDeclaration;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.detector;
|
||||
package com.codechecker.cache.detector;
|
||||
|
||||
/**
|
||||
* 一个 Redis value 写入点的静态描述。
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.diff;
|
||||
package com.codechecker.cache.diff;
|
||||
|
||||
/**
|
||||
* 结构变更类型及其默认严重级别。
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.diff;
|
||||
package com.codechecker.cache.diff;
|
||||
|
||||
/**
|
||||
* 一条结构变更记录。
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.codechecker.redis.diff;
|
||||
package com.codechecker.cache.diff;
|
||||
|
||||
import com.codechecker.redis.schema.FieldSchema;
|
||||
import com.codechecker.redis.schema.JsonType;
|
||||
import com.codechecker.redis.schema.TypeSchema;
|
||||
import com.codechecker.cache.schema.FieldSchema;
|
||||
import com.codechecker.cache.schema.JsonType;
|
||||
import com.codechecker.cache.schema.TypeSchema;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.diff;
|
||||
package com.codechecker.cache.diff;
|
||||
|
||||
/**
|
||||
* 变更严重级别。
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.git;
|
||||
package com.codechecker.cache.git;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.git;
|
||||
package com.codechecker.cache.git;
|
||||
|
||||
/**
|
||||
* Git 操作异常。
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.codechecker.redis.key;
|
||||
package com.codechecker.cache.key;
|
||||
|
||||
import com.codechecker.redis.schema.SourceIndex;
|
||||
import com.codechecker.cache.schema.SourceIndex;
|
||||
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
|
||||
import com.github.javaparser.ast.body.FieldDeclaration;
|
||||
import com.github.javaparser.ast.body.MethodDeclaration;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.notify;
|
||||
package com.codechecker.cache.notify;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.codechecker.redis.report;
|
||||
package com.codechecker.cache.report;
|
||||
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.Severity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.codechecker.redis.report;
|
||||
package com.codechecker.cache.report;
|
||||
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.Severity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.codechecker.redis.report;
|
||||
package com.codechecker.cache.report;
|
||||
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.Severity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
@@ -20,7 +20,7 @@ public class ReportBuilder {
|
||||
private final String titlePrefix;
|
||||
|
||||
public ReportBuilder(String titlePrefix) {
|
||||
this.titlePrefix = titlePrefix == null ? "[Redis结构变更]" : titlePrefix;
|
||||
this.titlePrefix = titlePrefix == null ? "[缓存结构变更]" : titlePrefix;
|
||||
}
|
||||
|
||||
public String toMarkdown(CheckReport report) {
|
||||
@@ -37,7 +37,7 @@ public class ReportBuilder {
|
||||
if (keys == null || keys.isEmpty()) {
|
||||
// 兼容仅有字段明细时退化展示
|
||||
if (report.getChanges().isEmpty()) {
|
||||
sb.append("未检测到 Redis 序列化结构变更。\n");
|
||||
sb.append("未检测到缓存序列化结构变更。\n");
|
||||
} else {
|
||||
for (SchemaChange c : report.getChanges()) {
|
||||
sb.append("- `").append(nvl(c.getKeyPattern())).append("`\n");
|
||||
@@ -71,7 +71,7 @@ public class ReportBuilder {
|
||||
public String toConsole(CheckReport report) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (!report.hasChanges()) {
|
||||
sb.append("未检测到 Redis 序列化结构变更。\n");
|
||||
sb.append("未检测到缓存序列化结构变更。\n");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -125,8 +125,8 @@ public class ReportBuilder {
|
||||
+ trimmed.substring(colonEn + 1).trim();
|
||||
}
|
||||
String[] knownPrefixes = {
|
||||
"删除字段 ", "新增字段 ", "字段路径迁移 ", "新增包装层 ", "新增 Redis 写入点,",
|
||||
"删除 Redis 写入点,原 value 类型: "
|
||||
"删除字段 ", "新增字段 ", "字段路径迁移 ", "新增包装层 ", "新增缓存写入点,",
|
||||
"删除缓存写入点,原 value 类型: "
|
||||
};
|
||||
for (String prefix : knownPrefixes) {
|
||||
if (trimmed.startsWith(prefix)) {
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import com.github.javaparser.ast.body.FieldDeclaration;
|
||||
import com.github.javaparser.ast.expr.AnnotationExpr;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
|
||||
import com.github.javaparser.ast.body.FieldDeclaration;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
/**
|
||||
* 序列化后 JSON 值的粗粒度类型。
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import com.github.javaparser.ParserConfiguration;
|
||||
import com.github.javaparser.StaticJavaParser;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
@@ -1,4 +1,4 @@
|
||||
# redis-schema-checker 内置默认配置
|
||||
# cache-schema-checker 内置默认配置
|
||||
# 业务仓库通过 --config 指定的配置会与本文件深度合并(业务配置优先)。
|
||||
|
||||
# 总开关:false 时不执行检测、不发通知、流水线直接通过
|
||||
@@ -19,7 +19,7 @@ notify:
|
||||
enabled: true
|
||||
webhook_url: ""
|
||||
notify_on_clean: false
|
||||
title_prefix: "[Redis结构变更]"
|
||||
title_prefix: "[缓存结构变更]"
|
||||
|
||||
# 忽略规则
|
||||
ignore:
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package com.codechecker.redis;
|
||||
package com.codechecker.cache;
|
||||
|
||||
import com.codechecker.redis.detector.RedisWritePointDetector;
|
||||
import com.codechecker.redis.detector.WritePoint;
|
||||
import com.codechecker.redis.diff.ChangeType;
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.SchemaDiffer;
|
||||
import com.codechecker.redis.schema.JavaSchemaExtractor;
|
||||
import com.codechecker.redis.schema.SourceIndex;
|
||||
import com.codechecker.redis.schema.TypeSchema;
|
||||
import com.codechecker.cache.detector.RedisWritePointDetector;
|
||||
import com.codechecker.cache.detector.WritePoint;
|
||||
import com.codechecker.cache.diff.ChangeType;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.SchemaDiffer;
|
||||
import com.codechecker.cache.schema.JavaSchemaExtractor;
|
||||
import com.codechecker.cache.schema.SourceIndex;
|
||||
import com.codechecker.cache.schema.TypeSchema;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis;
|
||||
package com.codechecker.cache;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.analyze;
|
||||
package com.codechecker.cache.analyze;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.codechecker.redis.config;
|
||||
package com.codechecker.cache.config;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.codechecker.redis.diff;
|
||||
package com.codechecker.cache.diff;
|
||||
|
||||
import com.codechecker.redis.schema.FieldSchema;
|
||||
import com.codechecker.redis.schema.JsonType;
|
||||
import com.codechecker.redis.schema.TypeSchema;
|
||||
import com.codechecker.cache.schema.FieldSchema;
|
||||
import com.codechecker.cache.schema.JsonType;
|
||||
import com.codechecker.cache.schema.TypeSchema;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.codechecker.redis.report;
|
||||
package com.codechecker.cache.report;
|
||||
|
||||
import com.codechecker.redis.diff.ChangeType;
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import com.codechecker.cache.diff.ChangeType;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.Severity;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
@@ -35,9 +35,9 @@ class ReportBuilderTest {
|
||||
key.setSeverity(Severity.P0);
|
||||
report.getKeyChanges().add(key);
|
||||
|
||||
String md = new ReportBuilder("[Redis数据结构变更]").toMarkdown(report);
|
||||
String md = new ReportBuilder("[缓存结构变更]").toMarkdown(report);
|
||||
|
||||
assertTrue(md.startsWith("## [Redis数据结构变更] jnpf-java-cloud"));
|
||||
assertTrue(md.startsWith("## [缓存结构变更] jnpf-java-cloud"));
|
||||
assertTrue(md.contains("> **分支**: code/redis_change_detection_v1.0"));
|
||||
assertTrue(md.contains("> **时间**: 2026-07-13 16:54:17"));
|
||||
assertTrue(md.contains("`tenant:db:content:*`"));
|
||||
@@ -69,7 +69,7 @@ class ReportBuilderTest {
|
||||
key.setNewSkeletonJson("{}");
|
||||
report.getKeyChanges().add(key);
|
||||
|
||||
String console = new ReportBuilder("[Redis数据结构变更]").toConsole(report);
|
||||
String console = new ReportBuilder("[缓存结构变更]").toConsole(report);
|
||||
assertTrue(console.contains("======== 字段明细 ========"));
|
||||
assertTrue(console.contains("**位置**: Foo#bar:1"));
|
||||
assertTrue(console.contains("**删除字段**: x"));
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.codechecker.redis.schema;
|
||||
package com.codechecker.cache.schema;
|
||||
|
||||
import com.codechecker.redis.TestSupport;
|
||||
import com.codechecker.redis.detector.RedisWritePointDetector;
|
||||
import com.codechecker.redis.detector.WritePoint;
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.SchemaDiffer;
|
||||
import com.codechecker.cache.TestSupport;
|
||||
import com.codechecker.cache.detector.RedisWritePointDetector;
|
||||
import com.codechecker.cache.detector.WritePoint;
|
||||
import com.codechecker.cache.diff.SchemaChange;
|
||||
import com.codechecker.cache.diff.SchemaDiffer;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.HashSet;
|
||||
Reference in New Issue
Block a user