This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release122 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 182b3c129a7aaf47b3e09bba7b129b672e829e66 Author: Jan Lahoda <[email protected]> AuthorDate: Sat Oct 17 07:09:27 2020 +0200 Stack trace analyzer needs to understand modular stack traces. --- .../java/stackanalyzer/StackLineAnalyser.java | 21 +++++++++++++-------- .../java/stackanalyzer/StackLineAnalyserTest.java | 8 ++++++++ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/java/java.navigation/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyser.java b/java/java.navigation/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyser.java index e044461..0212c1d 100644 --- a/java/java.navigation/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyser.java +++ b/java/java.navigation/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyser.java @@ -58,6 +58,7 @@ class StackLineAnalyser { "\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*"; // NOI18N private static final Pattern LINE_PATTERN = Pattern.compile( "at\\s" + // initial at // NOI18N + "("+IDENTIFIER+"(?:\\."+IDENTIFIER+")*/)?" + // optional module name // NOI18N "(("+IDENTIFIER+"(\\."+IDENTIFIER+")*)\\.)?("+IDENTIFIER+")" + // class name // NOI18N "\\.("+IDENTIFIER+"|\\<init\\>|\\<clinit\\>)\\((?:"+IDENTIFIER+"(?:\\."+IDENTIFIER+")*/)?" +IDENTIFIER+"\\.java" + // method and file name // NOI18N "\\:([0-9]*)\\)"); // line number // NOI18N @@ -72,22 +73,26 @@ class StackLineAnalyser { if (matcher.find()) { int lineNumber = -1; try { - lineNumber = Integer.parseInt(matcher.group(6)); + lineNumber = Integer.parseInt(matcher.group(7)); } catch (NumberFormatException nfe) { return null; } - if (matcher.group(1)==null ) { - return new Link(matcher.group(4), + int moduleStart = -1; + if (matcher.group(1) != null) { + moduleStart = matcher.start(1); + } + if (matcher.group(2)==null ) { + return new Link(matcher.group(5), lineNumber, - matcher.start(4), - matcher.end(6)+1 + moduleStart != (-1) ? moduleStart : matcher.start(5), + matcher.end(7)+1 ); } - return new Link(matcher.group(1) + matcher.group(4), + return new Link(matcher.group(2) + matcher.group(5), lineNumber, - matcher.start(1), - matcher.end(6)+1 + moduleStart != (-1) ? moduleStart : matcher.start(2), + matcher.end(7)+1 ); } return null; diff --git a/java/java.navigation/test/unit/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyserTest.java b/java/java.navigation/test/unit/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyserTest.java index 59cf39e..d60581c 100644 --- a/java/java.navigation/test/unit/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyserTest.java +++ b/java/java.navigation/test/unit/src/org/netbeans/modules/java/stackanalyzer/StackLineAnalyserTest.java @@ -46,6 +46,8 @@ public class StackLineAnalyserTest extends NbTestCase { assertTrue(StackLineAnalyser.matches("at javaapplication8.Main$1.run(Main.java:32)")); assertTrue(StackLineAnalyser.matches("at javaapplication8.Main$Inner.go(Main.java:40)")); assertTrue(StackLineAnalyser.matches(" [exec] at org.openide.filesystems.FileUtil.normalizeFileOnMac(FileUtil.java:1714)")); + assertTrue(StackLineAnalyser.matches("at java.base/java.lang.String.lastIndexOf(String.java:1627)")); + assertTrue(StackLineAnalyser.matches(" at java.base/java.lang.String.lastIndexOf(String.java:1627)")); } @Test @@ -68,6 +70,12 @@ public class StackLineAnalyserTest extends NbTestCase { l = StackLineAnalyser.analyse("at java.lang.String.lastIndexOf(String.java:1627) dfasdf"); assertEquals(3, l.getStartOffset()); assertEquals(49, l.getEndOffset()); + l = StackLineAnalyser.analyse("at java.base/java.lang.String.lastIndexOf(String.java:1627)"); + assertEquals(3, l.getStartOffset()); + assertEquals(59, l.getEndOffset()); + l = StackLineAnalyser.analyse(" at java.base/java.lang.String.lastIndexOf(String.java:1627)"); + assertEquals(4, l.getStartOffset()); + assertEquals(60, l.getEndOffset()); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
