feat: 修改从gitea上获取配置的逻辑
All checks were successful
Redis序列化结构检查 / redis-schema-check (push) Has been skipped
All checks were successful
Redis序列化结构检查 / redis-schema-check (push) Has been skipped
This commit is contained in:
@@ -22,20 +22,12 @@ public class ReportBuilder {
|
||||
public String toMarkdown(CheckReport report) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("## ").append(titlePrefix).append(' ')
|
||||
.append(nvl(report.getRepository())).append('\n');
|
||||
sb.append("> 分支: ").append(nvl(report.getBranch())).append('\n');
|
||||
sb.append("> 提交: ").append(shortSha(report.getOldSha()))
|
||||
.append(nvl(report.getRepository())).append("\n\n");
|
||||
sb.append("> **分支**: ").append(nvl(report.getBranch())).append('\n');
|
||||
sb.append("> **提交**: ").append(shortSha(report.getOldSha()))
|
||||
.append(" → ").append(shortSha(report.getNewSha())).append('\n');
|
||||
sb.append("> 提交人: ").append(nvl(report.getModifier())).append('\n');
|
||||
sb.append("> 时间: ").append(nvl(report.getModifyTime())).append('\n');
|
||||
sb.append("> 模式: ").append(nvl(report.getMode()));
|
||||
if (report.isBlocked()) {
|
||||
sb.append("(已阻断)");
|
||||
}
|
||||
sb.append('\n');
|
||||
sb.append("> 汇总: P0=").append(report.count(Severity.P0))
|
||||
.append(" P1=").append(report.count(Severity.P1))
|
||||
.append(" P2=").append(report.count(Severity.P2)).append("\n\n");
|
||||
sb.append("> **提交人**: ").append(nvl(report.getModifier())).append('\n');
|
||||
sb.append("> **时间**: ").append(nvl(report.getModifyTime())).append("\n\n");
|
||||
|
||||
Map<Severity, List<SchemaChange>> grouped = new EnumMap<>(Severity.class);
|
||||
for (SchemaChange c : report.getChanges()) {
|
||||
@@ -55,10 +47,10 @@ public class ReportBuilder {
|
||||
}
|
||||
sb.append('\n');
|
||||
if (c.getWriteLocation() != null) {
|
||||
sb.append(" - 位置: ").append(c.getWriteLocation()).append('\n');
|
||||
sb.append(" - **位置**: ").append(c.getWriteLocation()).append('\n');
|
||||
}
|
||||
if (c.getMessage() != null) {
|
||||
sb.append(" - ").append(c.getMessage()).append('\n');
|
||||
sb.append(" - ").append(formatDetailMessage(c.getMessage())).append('\n');
|
||||
}
|
||||
}
|
||||
sb.append('\n');
|
||||
@@ -66,6 +58,40 @@ public class ReportBuilder {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 将详情文案中的 key 加粗,如「删除字段 lastError」→「**删除字段**: lastError」。
|
||||
*/
|
||||
private String formatDetailMessage(String message) {
|
||||
String trimmed = message.trim();
|
||||
int colonCn = trimmed.indexOf(':');
|
||||
if (colonCn > 0 && colonCn <= 24) {
|
||||
return "**" + trimmed.substring(0, colonCn) + "**: "
|
||||
+ trimmed.substring(colonCn + 1).trim();
|
||||
}
|
||||
int colonEn = trimmed.indexOf(':');
|
||||
if (colonEn > 0 && colonEn <= 24 && !trimmed.substring(0, colonEn).contains(" ")) {
|
||||
return "**" + trimmed.substring(0, colonEn) + "**: "
|
||||
+ trimmed.substring(colonEn + 1).trim();
|
||||
}
|
||||
String[] knownPrefixes = {
|
||||
"删除字段 ", "新增字段 ", "字段路径迁移 ", "新增包装层 ", "新增 Redis 写入点,",
|
||||
"删除 Redis 写入点,原 value 类型: "
|
||||
};
|
||||
for (String prefix : knownPrefixes) {
|
||||
if (trimmed.startsWith(prefix)) {
|
||||
String key = prefix.trim();
|
||||
if (key.endsWith(",") || key.endsWith(",")) {
|
||||
key = key.substring(0, key.length() - 1);
|
||||
}
|
||||
return "**" + key + "**: " + trimmed.substring(prefix.length()).trim();
|
||||
}
|
||||
}
|
||||
if (trimmed.startsWith("字段 ") && trimmed.contains(" 类型由 ")) {
|
||||
return "**字段类型变更**: " + trimmed.substring("字段 ".length()).trim();
|
||||
}
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
public String toConsole(CheckReport report) {
|
||||
if (!report.hasChanges()) {
|
||||
return "未检测到 Redis 序列化结构变更。";
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.codechecker.redis.report;
|
||||
|
||||
import com.codechecker.redis.diff.ChangeType;
|
||||
import com.codechecker.redis.diff.SchemaChange;
|
||||
import com.codechecker.redis.diff.Severity;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class ReportBuilderTest {
|
||||
|
||||
@Test
|
||||
void markdownTemplateWithoutModeAndSummary() {
|
||||
CheckReport report = new CheckReport();
|
||||
report.setRepository("jnpf-java-cloud");
|
||||
report.setBranch("code/redis_change_detection_v1.0");
|
||||
report.setOldSha("cedd161c");
|
||||
report.setNewSha("67c8a6eb");
|
||||
report.setModifier("dongzi");
|
||||
report.setModifyTime("2026-07-13 16:54:17");
|
||||
report.setMode("notify");
|
||||
|
||||
SchemaChange change = new SchemaChange(ChangeType.FIELD_REMOVED);
|
||||
change.setSeverity(Severity.P0);
|
||||
change.setKeyPattern("saas:period-config:migration:current");
|
||||
change.setWriteLocation("SaasPeriodConfigMigrationRedisSupport#putCurrent:41");
|
||||
change.setMessage("删除字段 lastError1");
|
||||
report.getChanges().add(change);
|
||||
|
||||
String md = new ReportBuilder("[Redis数据结构变更]").toMarkdown(report);
|
||||
|
||||
assertTrue(md.startsWith("## [Redis数据结构变更] jnpf-java-cloud"));
|
||||
assertTrue(md.contains("> **分支**: code/redis_change_detection_v1.0"));
|
||||
assertTrue(md.contains("> **提交**: cedd161c → 67c8a6eb"));
|
||||
assertTrue(md.contains("> **提交人**: dongzi"));
|
||||
assertTrue(md.contains("> **时间**: 2026-07-13 16:54:17"));
|
||||
assertTrue(md.contains(" - **位置**: SaasPeriodConfigMigrationRedisSupport#putCurrent:41"));
|
||||
assertTrue(md.contains(" - **删除字段**: lastError1"));
|
||||
assertFalse(md.contains("模式"));
|
||||
assertFalse(md.contains("汇总"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user