From 7f4e859f399c0440b129b1afd1c7b567bee312f8 Mon Sep 17 00:00:00 2001 From: ZenCGL <281592141@qq.com> Date: Fri, 2 May 2025 18:52:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=BD=E4=BB=A4=E8=A1=8C=E5=A4=84=E7=90=86?= =?UTF-8?q?=E7=B1=BB=E5=90=8D=E6=97=B6=EF=BC=8C=E8=87=AA=E5=8A=A8=E6=9B=BF?= =?UTF-8?q?=E6=8D=A2/=E4=B8=BA.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/command/klass100/JadCommand.java | 2 +- .../command/klass100/SearchClassCommand.java | 2 +- .../core/command/monitor200/MonitorCommand.java | 3 ++- .../core/command/monitor200/TraceCommand.java | 3 ++- .../core/command/monitor200/WatchCommand.java | 3 ++- .../arthas/core/util/StringUtilsTest.java | 17 +++++++++++++++++ 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java index 1637421f7fc..5d2c5e0d12e 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/JadCommand.java @@ -68,7 +68,7 @@ public class JadCommand extends AnnotatedCommand { @Argument(argName = "class-pattern", index = 0) @Description("Class name pattern, use either '.' or '/' as separator") public void setClassPattern(String classPattern) { - this.classPattern = classPattern; + this.classPattern = StringUtils.normalizeClassName(classPattern); } @Argument(argName = "method-name", index = 1, required = false) diff --git a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java index 12017dfd6f6..eab1b05fff6 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/klass100/SearchClassCommand.java @@ -57,7 +57,7 @@ public class SearchClassCommand extends AnnotatedCommand { @Argument(argName = "class-pattern", index = 0) @Description("Class name pattern, use either '.' or '/' as separator") public void setClassPattern(String classPattern) { - this.classPattern = classPattern; + this.classPattern = StringUtils.normalizeClassName(classPattern); } @Option(shortName = "d", longName = "details", flag = true) diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorCommand.java index cef8f2e6599..e8eb98b168a 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/MonitorCommand.java @@ -7,6 +7,7 @@ import com.taobao.arthas.core.shell.command.CommandProcess; import com.taobao.arthas.core.shell.handlers.Handler; import com.taobao.arthas.core.util.SearchUtils; +import com.taobao.arthas.core.util.StringUtils; import com.taobao.arthas.core.util.matcher.Matcher; import com.taobao.middleware.cli.annotations.Argument; import com.taobao.middleware.cli.annotations.Description; @@ -40,7 +41,7 @@ public class MonitorCommand extends EnhancerCommand { @Argument(argName = "class-pattern", index = 0) @Description("Path and classname of Pattern Matching") public void setClassPattern(String classPattern) { - this.classPattern = classPattern; + this.classPattern = StringUtils.normalizeClassName(classPattern); } @Argument(argName = "method-pattern", index = 1) diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java index 1aaa08c78f9..9d8a4136ec9 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/TraceCommand.java @@ -5,6 +5,7 @@ import com.taobao.arthas.core.command.Constants; import com.taobao.arthas.core.shell.command.CommandProcess; import com.taobao.arthas.core.util.SearchUtils; +import com.taobao.arthas.core.util.StringUtils; import com.taobao.arthas.core.util.matcher.GroupMatcher; import com.taobao.arthas.core.util.matcher.Matcher; import com.taobao.arthas.core.util.matcher.RegexMatcher; @@ -55,7 +56,7 @@ public class TraceCommand extends EnhancerCommand { @Argument(argName = "class-pattern", index = 0) @Description("Class name pattern, use either '.' or '/' as separator") public void setClassPattern(String classPattern) { - this.classPattern = classPattern; + this.classPattern = StringUtils.normalizeClassName(classPattern); } @Argument(argName = "method-pattern", index = 1) diff --git a/core/src/main/java/com/taobao/arthas/core/command/monitor200/WatchCommand.java b/core/src/main/java/com/taobao/arthas/core/command/monitor200/WatchCommand.java index f0556465fc1..6d40509ffa7 100644 --- a/core/src/main/java/com/taobao/arthas/core/command/monitor200/WatchCommand.java +++ b/core/src/main/java/com/taobao/arthas/core/command/monitor200/WatchCommand.java @@ -9,6 +9,7 @@ import com.taobao.arthas.core.shell.cli.CompletionUtils; import com.taobao.arthas.core.shell.command.CommandProcess; import com.taobao.arthas.core.util.SearchUtils; +import com.taobao.arthas.core.util.StringUtils; import com.taobao.arthas.core.util.matcher.Matcher; import com.taobao.arthas.core.view.ObjectView; import com.taobao.middleware.cli.annotations.Argument; @@ -49,7 +50,7 @@ public class WatchCommand extends EnhancerCommand { @Argument(index = 0, argName = "class-pattern") @Description("The full qualified class name you want to watch") public void setClassPattern(String classPattern) { - this.classPattern = classPattern; + this.classPattern = StringUtils.normalizeClassName(classPattern); } @Argument(index = 1, argName = "method-pattern") diff --git a/core/src/test/java/com/taobao/arthas/core/util/StringUtilsTest.java b/core/src/test/java/com/taobao/arthas/core/util/StringUtilsTest.java index 2b76e80d004..8c1d3ec6a56 100644 --- a/core/src/test/java/com/taobao/arthas/core/util/StringUtilsTest.java +++ b/core/src/test/java/com/taobao/arthas/core/util/StringUtilsTest.java @@ -412,4 +412,21 @@ public void testWrap() { public void testClassLoaderHash() { Assert.assertEquals("null", StringUtils.classLoaderHash(null)); } + + @Test + public void testNormalizeNull() { + Assert.assertNull(StringUtils.normalizeClassName(null)); + } + + @Test + public void testNormalizeNoSlash() { + String input = "com.example.Class"; + Assert.assertEquals(input, StringUtils.normalizeClassName(input)); + } + + @Test + public void testNormalizeWithSlash() { + String input = "com/example/Class"; + Assert.assertEquals("com.example.Class", StringUtils.normalizeClassName(input)); + } }