From a7a04b7d0646644d3c2443fafd8f5abcc3af8301 Mon Sep 17 00:00:00 2001 From: pbludov Date: Wed, 17 Feb 2021 23:42:21 +0300 Subject: [PATCH] Issue #9297: solve spotbugs violations for java 11 --- config/spotbugs-exclude.xml | 6 +++-- .../checkstyle/JavadocDetailNodeParser.java | 22 +++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/config/spotbugs-exclude.xml b/config/spotbugs-exclude.xml index ed083234f37..5d4133890f5 100644 --- a/config/spotbugs-exclude.xml +++ b/config/spotbugs-exclude.xml @@ -89,8 +89,10 @@ - - + + + diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java b/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java index 2a508e39974..3bf90e54431 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/JavadocDetailNodeParser.java @@ -89,11 +89,6 @@ public class JavadocDetailNodeParser { */ private int blockCommentLineNumber; - /** - * Custom error listener. - */ - private DescriptiveErrorListener errorListener; - /** * Parses Javadoc comment as DetailNode tree. * @@ -109,7 +104,7 @@ public ParseStatus parseJavadocAsDetailNode(DetailAST javadocCommentAst) { // Use a new error listener each time to be able to use // one check instance for multiple files to be checked // without getting side effects. - errorListener = new DescriptiveErrorListener(); + final DescriptiveErrorListener errorListener = new DescriptiveErrorListener(); // Log messages should have line number in scope of file, // not in scope of Javadoc comment. @@ -119,7 +114,7 @@ public ParseStatus parseJavadocAsDetailNode(DetailAST javadocCommentAst) { final ParseStatus result = new ParseStatus(); try { - final JavadocParser javadocParser = createJavadocParser(javadocComment); + final JavadocParser javadocParser = createJavadocParser(javadocComment, errorListener); final ParseTree javadocParseTree = javadocParser.javadoc(); @@ -129,7 +124,8 @@ public ParseStatus parseJavadocAsDetailNode(DetailAST javadocCommentAst) { javadocCommentAst.getColumnNo() + JAVADOC_START.length()); result.setTree(tree); - result.firstNonTightHtmlTag = getFirstNonTightHtmlTag(javadocParser); + result.firstNonTightHtmlTag = getFirstNonTightHtmlTag(javadocParser, + errorListener.offset); } catch (ParseCancellationException | IllegalArgumentException ex) { ParseErrorMessage parseErrorMessage = null; @@ -165,9 +161,11 @@ public ParseStatus parseJavadocAsDetailNode(DetailAST javadocCommentAst) { * * @param blockComment * block comment content. + * @param errorListener custom error listener * @return parse tree */ - private JavadocParser createJavadocParser(String blockComment) { + private static JavadocParser createJavadocParser(String blockComment, + DescriptiveErrorListener errorListener) { final JavadocLexer lexer = new JavadocLexer(CharStreams.fromString(blockComment)); final CommonTokenStream tokens = new CommonTokenStream(lexer); @@ -519,9 +517,11 @@ else if (tokenType == JavadocTokenTypes.HTML_TAG_NAME && !stack.isEmpty()) { * or the ones which are supposed to log violation for non-tight javadocs can utilize that. * * @param javadocParser The ANTLR recognizer instance which has been used to parse the javadoc + * @param javadocLineOffset The line number of beginning of the Javadoc comment * @return First non-tight HTML tag if one exists; null otherwise */ - private Token getFirstNonTightHtmlTag(JavadocParser javadocParser) { + private static Token getFirstNonTightHtmlTag(JavadocParser javadocParser, + int javadocLineOffset) { final CommonToken offendingToken; final ParserRuleContext nonTightTagStartContext = javadocParser.nonTightTagStartContext; if (nonTightTagStartContext == null) { @@ -531,7 +531,7 @@ private Token getFirstNonTightHtmlTag(JavadocParser javadocParser) { final Token token = ((TerminalNode) nonTightTagStartContext.getChild(1)) .getSymbol(); offendingToken = new CommonToken(token); - offendingToken.setLine(offendingToken.getLine() + errorListener.offset); + offendingToken.setLine(offendingToken.getLine() + javadocLineOffset); } return offendingToken; }