From 2e4202615473755c77ad9bce9994586959b25b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Sat, 6 Aug 2022 04:42:59 +0800 Subject: [PATCH] =?UTF-8?q?Fixed=20#7=20member=20className=20misuse=20toSt?= =?UTF-8?q?ring()=20|=20=E4=BF=AE=E6=AD=A3=E6=88=90=E5=91=98=E7=9A=84?= =?UTF-8?q?=E7=B1=BB=E5=90=8D=E9=94=99=E7=94=A8=20toString()=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../linwancen/plugin/show/line/SkipUtils.java | 51 ++++++++++++------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index 0975f02..432eb74 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'io.github.linwancen' -version '1.20.0.' + (new Date().format('yyyy.MM.dd_HH.mm')) +version '1.20.1.' + (new Date().format('yyyy.MM.dd_HH.mm')) apply plugin: 'java' diff --git a/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java b/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java index a7fa803..645bbf1 100644 --- a/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java +++ b/src/main/java/io/github/linwancen/plugin/show/line/SkipUtils.java @@ -7,6 +7,8 @@ import com.intellij.psi.javadoc.PsiDocComment; import io.github.linwancen.plugin.show.settings.AppSettingsState; import io.github.linwancen.plugin.show.settings.ProjectSettingsState; import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.regex.Pattern; @@ -15,20 +17,8 @@ class SkipUtils { private SkipUtils() {} static boolean skipSign(PsiElement psiElement, AppSettingsState appSettings, ProjectSettingsState projectSettings) { - if (psiElement == null) { - return true; - } - String text; - if (psiElement instanceof PsiClass) { - PsiClass psiClass = (PsiClass) psiElement; - if (appSettings.skipAnnotation && psiClass.isAnnotationType()) { - return true; - } - text = psiClass.getQualifiedName(); - } else if (psiElement instanceof PsiMember) { - PsiMember psiMember = (PsiMember) psiElement; - text = psiMember.getContainingClass() + "#" + psiMember.getName(); - } else { + String text = psiName(psiElement, appSettings); + if (text == null) { return true; } return skipText(text, @@ -36,6 +26,33 @@ class SkipUtils { projectSettings.projectFilterEffective, projectSettings.lineInclude, projectSettings.lineExclude); } + private static @Nullable String psiName(@Nullable PsiElement psiElement, AppSettingsState appSettings) { + if (psiElement instanceof PsiClass) { + PsiClass psiClass = (PsiClass) psiElement; + if (appSettings.skipAnnotation && psiClass.isAnnotationType()) { + return null; + } + return psiClass.getQualifiedName(); + } else if (psiElement instanceof PsiMember) { + PsiMember psiMember = (PsiMember) psiElement; + StringBuilder sb = new StringBuilder(); + PsiClass psiClass = psiMember.getContainingClass(); + if (psiClass != null) { + String className = psiClass.getQualifiedName(); + if (className != null) { + sb.append(className); + } + } + sb.append("#"); + String name = psiMember.getName(); + if (name != null) { + sb.append(name); + } + return sb.toString(); + } + return null; + } + public static final Pattern NOT_ASCII_PATTERN = Pattern.compile("[^\u0000-\u007f]"); static PsiDocComment skipDoc(PsiDocComment doc, AppSettingsState appSettings, ProjectSettingsState projectSettings) { @@ -83,21 +100,21 @@ class SkipUtils { return false; } - static boolean skipText(String text, Pattern include, Pattern exclude) { + static boolean skipText(@NotNull String text, Pattern include, Pattern exclude) { if (exclude(text, exclude)) { return true; } return !include(text, include); } - static boolean include(String text, Pattern include) { + static boolean include(@NotNull String text, Pattern include) { if (include.pattern().length() == 0) { return true; } return include.matcher(text).find(); } - static boolean exclude(String text, Pattern exclude) { + static boolean exclude(@NotNull String text, Pattern exclude) { if (exclude.pattern().length() == 0) { return false; }