From ab98e25c0d7d21243400a8c4b5d0e6c46009ca88 Mon Sep 17 00:00:00 2001 From: luliu Date: Wed, 24 Dec 2025 18:50:15 +0800 Subject: [PATCH] =?UTF-8?q?feature=20=E6=94=AF=E6=8C=81=E5=A4=9A=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=90=8Capi=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 ++--- .../search/resolver/ApiResolverService.java | 24 +++++++++++++++---- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index adc2669..1afed4b 100644 --- a/build.gradle +++ b/build.gradle @@ -17,8 +17,8 @@ dependencies { implementation 'commons-codec:commons-codec:1.15' implementation 'org.freemarker:freemarker:2.3.31' implementation 'com.youbenzi:MDTool:1.2.4' - implementation 'org.projectlombok:lombok:1.18.2' - annotationProcessor 'org.projectlombok:lombok:1.18.2' + implementation 'org.projectlombok:lombok:1.18.20' + annotationProcessor 'org.projectlombok:lombok:1.18.20' } // See https://github.com/JetBrains/gradle-intellij-plugin/ @@ -50,4 +50,4 @@ publishPlugin { tasks.withType(JavaCompile) { options.encoding = "UTF-8" -} \ No newline at end of file +} diff --git a/src/main/java/cn/gudqs7/plugins/search/resolver/ApiResolverService.java b/src/main/java/cn/gudqs7/plugins/search/resolver/ApiResolverService.java index de59223..3fc09d6 100644 --- a/src/main/java/cn/gudqs7/plugins/search/resolver/ApiResolverService.java +++ b/src/main/java/cn/gudqs7/plugins/search/resolver/ApiResolverService.java @@ -6,11 +6,14 @@ import cn.gudqs7.plugins.common.util.jetbrain.ExceptionUtil; import cn.gudqs7.plugins.common.util.structure.PsiAnnotationUtil; import cn.gudqs7.plugins.search.pojo.RequestMappingAnnotationInfo; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.psi.*; import com.intellij.psi.impl.java.stubs.index.JavaAnnotationIndex; import com.intellij.psi.search.GlobalSearchScope; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -36,7 +39,7 @@ public static ApiResolverService getInstance(Project project) { public List getApiNavigationItemList() { List navigationItemList = new ArrayList<>(); String[] supportAnnotations = new String[]{"Controller", "RestController"}; - Map psiClassMap = new HashMap<>(); + List psiClassList = new ArrayList<>(); for (String supportAnnotation : supportAnnotations) { Collection psiAnnotations = JavaAnnotationIndex.getInstance().get(supportAnnotation, project, GlobalSearchScope.projectScope(project)); for (PsiAnnotation psiAnnotation : psiAnnotations) { @@ -46,10 +49,10 @@ public List getApiNavigationItemList() { continue; } PsiClass psiClass = (PsiClass) psiElement; - psiClassMap.put(psiClass.getQualifiedName(), psiClass); + psiClassList.add(psiClass); } } - for (PsiClass psiClass : psiClassMap.values()) { + for (PsiClass psiClass : psiClassList) { try { navigationItemList.addAll(getServiceItemList(psiClass)); } catch (Exception e) { @@ -144,7 +147,8 @@ private List getMethodList0(@NotNull PsiMethod psiMethod, String for (String methodPath : pathList) { String psiClassName = psiClass.getName(); String psiMethodName = psiMethod.getName(); - String location = psiClassName + "#" + psiMethodName; + String moduleName = getModuleName(psiClass); + String location = buildLocation(moduleName, psiClassName, psiMethodName); AnnotationHolder psiMethodHolder = AnnotationHolder.getPsiMethodHolder(psiMethod); CommentInfo commentInfo = psiMethodHolder.getCommentInfo(); String description = commentInfo.getValue(""); @@ -165,5 +169,17 @@ private List getRequestMappingPath(PsiAnnotation requestMappingAnnotatio return pathList; } + @Nullable + private String getModuleName(@NotNull PsiClass psiClass) { + Module module = ModuleUtil.findModuleForPsiElement(psiClass); + return module != null ? module.getName() : null; + } + + private String buildLocation(@Nullable String moduleName, @NotNull String className, @NotNull String methodName) { + if (StringUtils.isNotBlank(moduleName)) { + return "[" + moduleName + "] " + className + "#" + methodName; + } + return className + "#" + methodName; + } }