Class AbstractJavadocCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck
-
- All Implemented Interfaces:
Configurable
,Contextualizable
- Direct Known Subclasses:
AtclauseOrderCheck
,ClassAndPropertiesSettersJavadocScraper
,JavadocBlockTagLocationCheck
,JavadocLeadingAsteriskAlignCheck
,JavadocMetadataScraper
,JavadocMissingLeadingAsteriskCheck
,JavadocMissingWhitespaceAfterAsteriskCheck
,JavadocParagraphCheck
,JavadocTagContinuationIndentationCheck
,MissingDeprecatedCheck
,NonEmptyAtclauseDescriptionCheck
,RequireEmptyLineBeforeBlockTagGroupCheck
,SingleLineJavadocCheck
,SummaryJavadocCheck
public abstract class AbstractJavadocCheck extends AbstractCheck
Base class for Checks that process Javadoc comments.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
AbstractJavadocCheck.FileContext
The file context holder.-
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions
-
-
Field Summary
Fields Modifier and Type Field Description private ThreadLocal<AbstractJavadocCheck.FileContext>
context
The file context.private Set<Integer>
javadocTokens
The javadoc tokens the check is interested in.static String
MSG_JAVADOC_MISSED_HTML_CLOSE
Message key of error message.static String
MSG_JAVADOC_PARSE_RULE_ERROR
Parse error while rule recognition.static String
MSG_JAVADOC_WRONG_SINGLETON_TAG
Message key of error message.static String
MSG_KEY_UNCLOSED_HTML_TAG
Message key of error message.private static ThreadLocal<Map<Integer,JavadocDetailNodeParser.ParseStatus>>
TREE_CACHE
Key is the block comment node "lineNo".private boolean
violateExecutionOnNonTightHtml
This property determines if a check should log a violation upon encountering javadoc with non-tight html.
-
Constructor Summary
Constructors Constructor Description AbstractJavadocCheck()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
acceptJavadocWithNonTightHtml()
This method determines if a check should process javadoc containing non-tight html tags.void
beginJavadocTree(DetailNode rootAst)
Called before the starting to process a tree.void
beginTree(DetailAST rootAST)
Called before the starting to process a tree.void
destroy()
Destroy the check.void
finishJavadocTree(DetailNode rootAst)
Called after finished processing a tree.void
finishTree(DetailAST rootAST)
Called after finished processing a tree.int[]
getAcceptableJavadocTokens()
The configurable javadoc token set.int[]
getAcceptableTokens()
The configurable token set.protected DetailAST
getBlockCommentAst()
Getter for block comment in Java language syntax tree.abstract int[]
getDefaultJavadocTokens()
Returns the default javadoc token types a check is interested in.int[]
getDefaultTokens()
Defined final to not allow JavadocChecks to change default tokens.int[]
getRequiredJavadocTokens()
The javadoc tokens that this check must be registered for.int[]
getRequiredTokens()
The tokens that this check must be registered for.void
init()
Initialize the check.boolean
isCommentNodesRequired()
Defined final because all JavadocChecks require comment nodes.void
leaveJavadocToken(DetailNode ast)
Called after all the child nodes have been process.private void
processTree(DetailNode root)
Processes JavadocAST tree notifying Check.void
setJavadocTokens(String... strRep)
Adds a set of tokens the check is interested in.void
setViolateExecutionOnNonTightHtml(boolean shouldReportViolation)
Setter to control when to print violations if the Javadoc being examined by this check violates the tight html rules defined at Tight-HTML Rules.private boolean
shouldBeProcessed(DetailNode curNode)
Checks whether the current node should be processed by the check.private void
validateDefaultJavadocTokens()
Validates that check's required javadoc tokens are subset of default javadoc tokens.abstract void
visitJavadocToken(DetailNode ast)
Called to process a Javadoc token.void
visitToken(DetailAST blockCommentNode)
Called to process a token.private void
walk(DetailNode root)
Processes a node calling Check at interested nodes.-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
clearViolations, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
Methods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
-
-
-
Field Detail
-
MSG_JAVADOC_MISSED_HTML_CLOSE
public static final String MSG_JAVADOC_MISSED_HTML_CLOSE
Message key of error message. Missed close HTML tag breaks structure of parse tree, so parser stops parsing and generates such error message. This case is special because parser prints error like"no viable alternative at input 'b \n *\n'"
and it is not clear that error is about missed close HTML tag.- See Also:
- Constant Field Values
-
MSG_JAVADOC_WRONG_SINGLETON_TAG
public static final String MSG_JAVADOC_WRONG_SINGLETON_TAG
Message key of error message.- See Also:
- Constant Field Values
-
MSG_JAVADOC_PARSE_RULE_ERROR
public static final String MSG_JAVADOC_PARSE_RULE_ERROR
Parse error while rule recognition.- See Also:
- Constant Field Values
-
MSG_KEY_UNCLOSED_HTML_TAG
public static final String MSG_KEY_UNCLOSED_HTML_TAG
Message key of error message.- See Also:
- Constant Field Values
-
TREE_CACHE
private static final ThreadLocal<Map<Integer,JavadocDetailNodeParser.ParseStatus>> TREE_CACHE
Key is the block comment node "lineNo". Value isDetailNode
tree. Map is stored inThreadLocal
to guarantee basic thread safety and avoid shared, mutable state when not necessary.
-
context
private final ThreadLocal<AbstractJavadocCheck.FileContext> context
The file context.
-
javadocTokens
private final Set<Integer> javadocTokens
The javadoc tokens the check is interested in.
-
violateExecutionOnNonTightHtml
private boolean violateExecutionOnNonTightHtml
This property determines if a check should log a violation upon encountering javadoc with non-tight html. The default return value for this method is set to false since checks generally tend to be fine with non-tight html. It can be set through config file if a check is to log violation upon encountering non-tight HTML in javadoc.
-
-
Constructor Detail
-
AbstractJavadocCheck
public AbstractJavadocCheck()
-
-
Method Detail
-
getDefaultJavadocTokens
public abstract int[] getDefaultJavadocTokens()
Returns the default javadoc token types a check is interested in.- Returns:
- the default javadoc token types
- See Also:
JavadocTokenTypes
-
visitJavadocToken
public abstract void visitJavadocToken(DetailNode ast)
Called to process a Javadoc token.- Parameters:
ast
- the token to process
-
getAcceptableJavadocTokens
public int[] getAcceptableJavadocTokens()
The configurable javadoc token set. Used to protect Checks against malicious users who specify an unacceptable javadoc token set in the configuration file. The default implementation returns the check's default javadoc tokens.- Returns:
- the javadoc token set this check is designed for.
- See Also:
JavadocTokenTypes
-
getRequiredJavadocTokens
public int[] getRequiredJavadocTokens()
The javadoc tokens that this check must be registered for.- Returns:
- the javadoc token set this must be registered for.
- See Also:
JavadocTokenTypes
-
acceptJavadocWithNonTightHtml
public boolean acceptJavadocWithNonTightHtml()
This method determines if a check should process javadoc containing non-tight html tags. This method must be overridden in checks extendingAbstractJavadocCheck
which are not supposed to process javadoc containing non-tight html tags.- Returns:
- true if the check should or can process javadoc containing non-tight html tags; false otherwise
- See Also:
JavadocDetailNodeParser.ParseStatus.isNonTight()
, Tight HTML rules
-
setViolateExecutionOnNonTightHtml
public final void setViolateExecutionOnNonTightHtml(boolean shouldReportViolation)
Setter to control when to print violations if the Javadoc being examined by this check violates the tight html rules defined at Tight-HTML Rules.- Parameters:
shouldReportViolation
- value to which the field shall be set to- Since:
- 8.3
-
setJavadocTokens
public final void setJavadocTokens(String... strRep)
Adds a set of tokens the check is interested in.- Parameters:
strRep
- the string representation of the tokens interested in
-
init
public void init()
Description copied from class:AbstractCheck
Initialize the check. This is the time to verify that the check has everything required to perform its job.- Overrides:
init
in classAbstractCheck
-
validateDefaultJavadocTokens
private void validateDefaultJavadocTokens()
Validates that check's required javadoc tokens are subset of default javadoc tokens.- Throws:
IllegalStateException
- when validation of default javadoc tokens fails
-
beginJavadocTree
public void beginJavadocTree(DetailNode rootAst)
Called before the starting to process a tree.- Parameters:
rootAst
- the root of the tree
-
finishJavadocTree
public void finishJavadocTree(DetailNode rootAst)
Called after finished processing a tree.- Parameters:
rootAst
- the root of the tree
-
leaveJavadocToken
public void leaveJavadocToken(DetailNode ast)
Called after all the child nodes have been process.- Parameters:
ast
- the token leaving
-
getDefaultTokens
public final int[] getDefaultTokens()
Defined final to not allow JavadocChecks to change default tokens.- Specified by:
getDefaultTokens
in classAbstractCheck
- Returns:
- default tokens
- See Also:
TokenTypes
-
getAcceptableTokens
public final int[] getAcceptableTokens()
Description copied from class:AbstractCheck
The configurable token set. Used to protect Checks against malicious users who specify an unacceptable token set in the configuration file. The default implementation returns the check's default tokens.- Specified by:
getAcceptableTokens
in classAbstractCheck
- Returns:
- the token set this check is designed for.
- See Also:
TokenTypes
-
getRequiredTokens
public final int[] getRequiredTokens()
Description copied from class:AbstractCheck
The tokens that this check must be registered for.- Specified by:
getRequiredTokens
in classAbstractCheck
- Returns:
- the token set this must be registered for.
- See Also:
TokenTypes
-
isCommentNodesRequired
public final boolean isCommentNodesRequired()
Defined final because all JavadocChecks require comment nodes.- Overrides:
isCommentNodesRequired
in classAbstractCheck
- Returns:
- true
-
beginTree
public final void beginTree(DetailAST rootAST)
Description copied from class:AbstractCheck
Called before the starting to process a tree. Ideal place to initialize information that is to be collected whilst processing a tree.- Overrides:
beginTree
in classAbstractCheck
- Parameters:
rootAST
- the root of the tree
-
finishTree
public final void finishTree(DetailAST rootAST)
Description copied from class:AbstractCheck
Called after finished processing a tree. Ideal place to report on information collected whilst processing a tree.- Overrides:
finishTree
in classAbstractCheck
- Parameters:
rootAST
- the root of the tree
-
visitToken
public final void visitToken(DetailAST blockCommentNode)
Description copied from class:AbstractCheck
Called to process a token.- Overrides:
visitToken
in classAbstractCheck
- Parameters:
blockCommentNode
- the token to process
-
getBlockCommentAst
protected DetailAST getBlockCommentAst()
Getter for block comment in Java language syntax tree.- Returns:
- A block comment in the syntax tree.
-
processTree
private void processTree(DetailNode root)
Processes JavadocAST tree notifying Check.- Parameters:
root
- root of JavadocAST tree.
-
walk
private void walk(DetailNode root)
Processes a node calling Check at interested nodes.- Parameters:
root
- the root of tree for process
-
shouldBeProcessed
private boolean shouldBeProcessed(DetailNode curNode)
Checks whether the current node should be processed by the check.- Parameters:
curNode
- current node.- Returns:
- true if the current node should be processed by the check.
-
destroy
public void destroy()
Description copied from class:AbstractCheck
Destroy the check. It is being retired from service.- Overrides:
destroy
in classAbstractCheck
-
-