Skip to content

Commit

Permalink
Issue #9297: solve spotbugs violations for java 11
Browse files Browse the repository at this point in the history
  • Loading branch information
pbludov committed Feb 18, 2021
1 parent 0d02d43 commit a7a04b7
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 13 deletions.
6 changes: 4 additions & 2 deletions config/spotbugs-exclude.xml
Expand Up @@ -89,8 +89,10 @@
<!-- beginProcessing() is kind of c-tor -->
<Class name="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpMultilineCheck" />
<Class name="com.puppycrawl.tools.checkstyle.checks.regexp.RegexpSinglelineCheck" />
<!-- Uses setters to set fields values -->
<Class name="com.puppycrawl.tools.checkstyle.api.AbstractCheck" />
<!-- Uses setters to set fields values.
This is part of the public API, so it's hard to refactor. -->
<Class name="com.puppycrawl.tools.checkstyle.api.AbstractCheck$FileContext" />
<Class name="com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck$FileContext" />
<!-- We cannot modify fields since we won't have the values
to create the instance until the setters are called -->
<Class name="com.puppycrawl.tools.checkstyle.filters.SuppressionSingleFilter"/>
Expand Down
Expand Up @@ -89,11 +89,6 @@ public class JavadocDetailNodeParser {
*/
private int blockCommentLineNumber;

/**
* Custom error listener.
*/
private DescriptiveErrorListener errorListener;

/**
* Parses Javadoc comment as DetailNode tree.
*
Expand All @@ -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.
Expand All @@ -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();

Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand All @@ -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;
}
Expand Down

0 comments on commit a7a04b7

Please sign in to comment.