diff --git a/.gitea/checker/api-templates/README.md b/.gitea/checker/api-templates/README.md index 0dd94e8..5b32f7e 100644 --- a/.gitea/checker/api-templates/README.md +++ b/.gitea/checker/api-templates/README.md @@ -51,7 +51,7 @@ WeComNotifier ────────► ApiChangeNotifier(新 **方法指纹建议**(用于跨 commit 匹配同一接口): ``` -controller源文件 + 方法名 + 参数槽位(如 0:query,1:body;不含类型与绑定名) +controller源文件 + 方法名(不含参数信息;增删参/改类型等由 ParameterDiffEngine 检测) ``` 仅 URI 匹配在「改路径」场景会失效,需指纹辅助。 diff --git a/.gitea/checker/api-templates/api-path-change.md b/.gitea/checker/api-templates/api-path-change.md index 5b56af7..63f48db 100644 --- a/.gitea/checker/api-templates/api-path-change.md +++ b/.gitea/checker/api-templates/api-path-change.md @@ -77,7 +77,7 @@ 1. 解析旧/新 commit 下同一 Controller 源码 AST 2. 提取每个方法的 `httpMethod` + `uri`(已有 `EndpointParser` 逻辑) -3. 用**方法指纹**(类文件 + 方法名 + 参数槽位,如 `0:query,1:query`;不含类型与绑定名)匹配新旧接口 +3. 用**方法指纹**(类文件 + 方法名,如 `ApplyClockInController.java#getApply`)匹配新旧接口;参数增删改由 ParameterDiffEngine 检测 4. 指纹相同且 URI 不同 → **修改路径** 5. 仅旧有新无 → **删除**;仅新有旧无 → **新增** diff --git a/.gitea/checker/src/main/java/com/codechecker/api/model/EndpointSnapshot.java b/.gitea/checker/src/main/java/com/codechecker/api/model/EndpointSnapshot.java index cff7b38..4087283 100644 --- a/.gitea/checker/src/main/java/com/codechecker/api/model/EndpointSnapshot.java +++ b/.gitea/checker/src/main/java/com/codechecker/api/model/EndpointSnapshot.java @@ -29,16 +29,9 @@ public class EndpointSnapshot { this.parameters = parameters == null ? List.of() : new ArrayList<>(parameters); } - public static String buildFingerprint(String sourceFile, String methodName, - List parameters) { - StringBuilder sig = new StringBuilder(); - for (int i = 0; i < parameters.size(); i++) { - if (i > 0) { - sig.append(','); - } - sig.append(parameters.get(i).fingerprintSlotKey(i)); - } - return sourceFile + "#" + methodName + "#" + sig; + /** 跨 commit 配对同一 Java 方法;不含参数信息,参数 diff 由 ParameterDiffEngine 负责 */ + public static String buildFingerprint(String sourceFile, String methodName) { + return sourceFile + "#" + methodName; } public String getFingerprint() { diff --git a/.gitea/checker/src/main/java/com/codechecker/api/model/MethodParameterSnapshot.java b/.gitea/checker/src/main/java/com/codechecker/api/model/MethodParameterSnapshot.java index 2c92334..718d1a5 100644 --- a/.gitea/checker/src/main/java/com/codechecker/api/model/MethodParameterSnapshot.java +++ b/.gitea/checker/src/main/java/com/codechecker/api/model/MethodParameterSnapshot.java @@ -53,11 +53,6 @@ public class MethodParameterSnapshot { return dtoClassName; } - /** 接口指纹槽位:序号 + 参数来源,不含类型与绑定名,避免类型/绑定变更导致误配对 */ - public String fingerprintSlotKey(int index) { - return index + ":" + source; - } - /** path/query 按绑定名匹配,避免仅 Java 形参重命名误报 */ public String identityKey() { if ("path".equals(source) || "query".equals(source)) { diff --git a/.gitea/checker/src/main/java/com/codechecker/api/notify/ApiChangeNotifier.java b/.gitea/checker/src/main/java/com/codechecker/api/notify/ApiChangeNotifier.java index 4e32d81..c238605 100644 --- a/.gitea/checker/src/main/java/com/codechecker/api/notify/ApiChangeNotifier.java +++ b/.gitea/checker/src/main/java/com/codechecker/api/notify/ApiChangeNotifier.java @@ -127,7 +127,7 @@ public class ApiChangeNotifier { sb.append("# 【API参数变更通知】").append("\n\n"); sb.append(MarkdownStyles.quoteKvBold("修改人", MarkdownStyles.colorComment(modifier))).append("\n"); sb.append(MarkdownStyles.quoteKvBold("时间", MarkdownStyles.colorComment(modifyTime))).append("\n"); - sb.append(MarkdownStyles.quoteKvBold("变更类型", MarkdownStyles.colorWarning("修改参数"))).append("\n"); + //sb.append(MarkdownStyles.quoteKvBold("变更类型", MarkdownStyles.colorWarning("修改参数"))).append("\n"); sb.append(MarkdownStyles.quoteKvBold("URI", MarkdownStyles.colorInfo(report.getHttpMethod()) + " " + MarkdownStyles.inlineCode(report.getUri()))).append("\n"); diff --git a/.gitea/checker/src/main/java/com/codechecker/api/parser/EndpointSnapshotParser.java b/.gitea/checker/src/main/java/com/codechecker/api/parser/EndpointSnapshotParser.java index 7303000..7a92204 100644 --- a/.gitea/checker/src/main/java/com/codechecker/api/parser/EndpointSnapshotParser.java +++ b/.gitea/checker/src/main/java/com/codechecker/api/parser/EndpointSnapshotParser.java @@ -93,7 +93,7 @@ public class EndpointSnapshotParser { List httpMethods = extractHttpMethods(annotation, annName); List params = extractParameters(method); String methodDescription = MethodDescriptionExtractor.extract(method); - String fingerprint = EndpointSnapshot.buildFingerprint(sourceFile, method.getNameAsString(), params); + String fingerprint = EndpointSnapshot.buildFingerprint(sourceFile, method.getNameAsString()); for (String httpMethod : httpMethods) { for (String subPath : subPaths) { String uri = joinPaths(basePath, subPath);