This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package com.codechecker;
|
||||
|
||||
import com.codechecker.analyzer.ClassChangeAnalyzer;
|
||||
import com.codechecker.analyzer.DtoNestIndex;
|
||||
import com.codechecker.analyzer.EndpointIndexBuilder;
|
||||
import com.codechecker.api.analyzer.ApiChangeAnalyzer;
|
||||
import com.codechecker.api.analyzer.DtoImpactedApiAnalyzer;
|
||||
@@ -67,23 +68,24 @@ public class CodeCheckMain implements Callable<Integer> {
|
||||
}
|
||||
|
||||
GitChangeScanner gitScanner = new GitChangeScanner(repoRoot.toAbsolutePath());
|
||||
DtoNestIndex nestIndex = DtoNestIndex.build(repoRoot.toAbsolutePath(), appConfig);
|
||||
List<ClassChangeReport> classReports = List.of();
|
||||
List<EndpointChangeReport> apiReports = List.of();
|
||||
|
||||
if (appConfig.isClassCheckEnabled()) {
|
||||
classReports = analyzeClassChanges(appConfig, gitScanner);
|
||||
classReports = analyzeClassChanges(appConfig, gitScanner, nestIndex);
|
||||
} else {
|
||||
System.out.println("类变更检测已关闭(class_check.enabled=false)");
|
||||
}
|
||||
|
||||
if (appConfig.isApiCheckEnabled()) {
|
||||
apiReports = analyzeApiChanges(appConfig, gitScanner, classReports);
|
||||
apiReports = analyzeApiChanges(appConfig, gitScanner, classReports, nestIndex);
|
||||
} else {
|
||||
System.out.println("API 变更检测已关闭(api_check.enabled=false)");
|
||||
}
|
||||
|
||||
OverlapNotificationFilter.FilterResult filtered = OverlapNotificationFilter.apply(
|
||||
classReports, apiReports, appConfig.getDtoOverlapMode());
|
||||
classReports, apiReports, appConfig.getDtoOverlapMode(), nestIndex);
|
||||
int totalSent = sendClassNotifications(appConfig, filtered.classReports())
|
||||
+ sendApiNotifications(appConfig, filtered.apiReports());
|
||||
|
||||
@@ -93,8 +95,8 @@ public class CodeCheckMain implements Callable<Integer> {
|
||||
return 0;
|
||||
}
|
||||
|
||||
private List<ClassChangeReport> analyzeClassChanges(AppConfig appConfig, GitChangeScanner gitScanner)
|
||||
throws Exception {
|
||||
private List<ClassChangeReport> analyzeClassChanges(AppConfig appConfig, GitChangeScanner gitScanner,
|
||||
DtoNestIndex nestIndex) throws Exception {
|
||||
System.out.println("=== 类变更检测 ===");
|
||||
EndpointIndexBuilder indexBuilder = new EndpointIndexBuilder();
|
||||
Map<String, ApiEndpoint> endpointIndex = indexBuilder.buildIndex(repoRoot.toAbsolutePath(), appConfig);
|
||||
@@ -102,13 +104,14 @@ public class CodeCheckMain implements Callable<Integer> {
|
||||
|
||||
ClassChangeAnalyzer analyzer = new ClassChangeAnalyzer(gitScanner);
|
||||
List<ClassChangeReport> reports = analyzer.analyze(
|
||||
repoRoot.toAbsolutePath(), appConfig, oldSha, newSha, endpointIndex);
|
||||
repoRoot.toAbsolutePath(), appConfig, oldSha, newSha, endpointIndex, nestIndex);
|
||||
System.out.println("检测到需通知的类变更数量: " + reports.size());
|
||||
return reports;
|
||||
}
|
||||
|
||||
private List<EndpointChangeReport> analyzeApiChanges(AppConfig appConfig, GitChangeScanner gitScanner,
|
||||
List<ClassChangeReport> classReports) throws Exception {
|
||||
List<ClassChangeReport> classReports,
|
||||
DtoNestIndex nestIndex) throws Exception {
|
||||
System.out.println("=== API 变更检测 ===");
|
||||
ApiFileChangeScanner fileScanner = new ApiFileChangeScanner(gitScanner);
|
||||
Set<String> changedApiFiles = new LinkedHashSet<>(fileScanner.scanChangedFiles(
|
||||
@@ -123,7 +126,7 @@ public class CodeCheckMain implements Callable<Integer> {
|
||||
if (appConfig.isDtoApiFollowUpEnabled() && !classReports.isEmpty()) {
|
||||
DtoImpactedApiAnalyzer dtoAnalyzer = new DtoImpactedApiAnalyzer(gitScanner);
|
||||
List<EndpointChangeReport> followUpReports = dtoAnalyzer.analyze(
|
||||
repoRoot.toAbsolutePath(), appConfig, oldSha, newSha, classReports, changedApiFiles);
|
||||
repoRoot.toAbsolutePath(), appConfig, oldSha, newSha, classReports, changedApiFiles, nestIndex);
|
||||
if (!followUpReports.isEmpty()) {
|
||||
System.out.println("Dto 跟进检测到 API 参数变更数量: " + followUpReports.size());
|
||||
reports.addAll(followUpReports);
|
||||
|
||||
Reference in New Issue
Block a user