Class SummaryJavadocCheck
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
com.puppycrawl.tools.checkstyle.checks.javadoc.SummaryJavadocCheck
- All Implemented Interfaces:
Configurable,Contextualizable
Checks that
Javadoc summary sentence does not contain phrases that are not recommended to use.
Summaries that contain only the
{@inheritDoc} tag are skipped.
Summaries that contain a non-empty {@return} are allowed.
Check also violate Javadoc that does not contain first sentence, though with {@return} a
period is not required as the Javadoc tool adds it.
Note: For defining a summary, both the first sentence and the @summary tag approaches are supported.
-
Property
forbiddenSummaryFragments- Specify the regexp for forbidden summary fragments. Type isjava.util.regex.Pattern. Default value is"^$". -
Property
period- Specify the period symbol. Used to check the first sentence ends with a period. Periods that are not followed by a whitespace character are ignored (eg. the period in v1.0). Because some periods include whitespace built into the character, if this is set to a non-default value any period will end the sentence, whether it is followed by whitespace or not. Type isjava.lang.String. Default value is".". -
Property
violateExecutionOnNonTightHtml- Control when to print violations if the Javadoc being examined by this check violates the tight html rules defined at Tight-HTML Rules. Type isboolean. Default value isfalse.
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
-
javadoc.missed.html.close -
javadoc.parse.rule.error -
javadoc.unclosedHtml -
javadoc.wrong.singleton.html.tag -
summary.first.sentence -
summary.javaDoc -
summary.javaDoc.missing -
summary.javaDoc.missing.period
- Since:
- 6.0
-
Nested Class Summary
Nested classes/interfaces inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
AbstractAutomaticBean.OutputStreamOptions -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final BitSetSet of allowed Tokens tags in summary java doc.private static final StringDefault period literal.private PatternSpecify the regexp for forbidden summary fragments.private static final PatternThis regexp is used to remove html tags, whitespace, and asterisks from a string.private static final PatternThis regexp is used to convert multiline javadoc to single-line without stars.static final StringA key is pointing to the warning message text in "messages.properties" file.static final StringA key is pointing to the warning message text in "messages.properties" file.static final StringA key is pointing to the warning message text in "messages.properties" file.static final StringA key is pointing to the warning message text in "messages.properties" file.private StringSpecify the period symbol.private static final StringReturn tag text.private static final StringSummary tag text.Fields inherited from class com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck
MSG_JAVADOC_MISSED_HTML_CLOSE, MSG_JAVADOC_PARSE_RULE_ERROR, MSG_JAVADOC_WRONG_SINGLETON_TAG, MSG_KEY_UNCLOSED_HTML_TAG -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleancontainsForbiddenFragment(String firstSentence) Tests if first sentence contains forbidden summary fragment.private static voidextractInlineTagContent(DetailNode node, StringBuilder customTagContent) Extracts the content of inline custom tag recursively.findSentenceEnding(String text, String period) Finds the end of a sentence.static StringgetContentOfInlineCustomTag(DetailNode inlineTag) Gets the content of inline custom tag.int[]Returns the default javadoc token types a check is interested in.getFirstSentence(DetailNode ast, String period) Finds the first sentence.private static Optional<DetailNode>getInlineTagNode(DetailNode javadoc) Gets the node for the inline tag if present.private static DetailNodeReturns an inline javadoc tag node that is within a html tag.int[]The javadoc tokens that this check must be registered for.private static StringgetStringInsideTag(String result, DetailNode detailNode) Get concatenated string within text of html tags.private static StringFinds and returns summary sentence.private static StringgetVisibleContent(String summary) Gets the string that is visible to user in javadoc.private static booleanisDefinedFirst(DetailNode inlineSummaryTag) Whether the{@summary}tag is defined first in the javadoc.private static booleanisInlineReturnTag(DetailNode javadocInlineTag) Checks if the first tag inside ast is{@return}tag.private static booleanChecks if the inline tag node is present.private static booleanisInlineTagWithName(DetailNode javadocInlineTag, String name) Checks if the first tag inside ast is a tag with the given name.private static booleanisSummaryTag(DetailNode javadocInlineTag) Checks if the javadoc inline tag is{@summary}tag.static booleanWhether some text is present inside the HTML element or tag.voidsetForbiddenSummaryFragments(Pattern pattern) Setter to specify the regexp for forbidden summary fragments.voidSetter to specify the period symbol.private static booleanChecks if the node starts with an {@inheritDoc}.streamTextParts(DetailNode node) Streams through all the text under the given node.private static StringtrimExcessWhitespaces(String text) Trims the giventextof duplicate whitespaces.private voidvalidateInlineReturnTag(DetailNode inlineReturnTag) Checks the inline return for forbidden fragments.private voidvalidateSummaryTag(DetailNode inlineSummaryTag) Checks the inline summary (if present) forperiodat end and forbidden fragments.private voidChecks the javadoc text forperiodat end and forbidden fragments.voidCalled to process a Javadoc token.Methods inherited from class com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck
acceptJavadocWithNonTightHtml, beginJavadocTree, beginTree, destroy, finishJavadocTree, finishTree, getAcceptableJavadocTokens, getAcceptableTokens, getBlockCommentAst, getDefaultTokens, getRequiredTokens, init, isCommentNodesRequired, leaveJavadocToken, setJavadocTokens, setViolateExecutionOnNonTightHtml, visitTokenMethods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
clearViolations, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensMethods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityMethods inherited from class com.puppycrawl.tools.checkstyle.AbstractAutomaticBean
configure, contextualize, getConfiguration, setupChild
-
Field Details
-
MSG_SUMMARY_FIRST_SENTENCE
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
MSG_SUMMARY_JAVADOC
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
MSG_SUMMARY_JAVADOC_MISSING
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
MSG_SUMMARY_MISSING_PERIOD
A key is pointing to the warning message text in "messages.properties" file.- See Also:
-
JAVADOC_MULTILINE_TO_SINGLELINE_PATTERN
This regexp is used to convert multiline javadoc to single-line without stars. -
HTML_ELEMENTS
This regexp is used to remove html tags, whitespace, and asterisks from a string. -
DEFAULT_PERIOD
Default period literal.- See Also:
-
SUMMARY_TEXT
Summary tag text.- See Also:
-
RETURN_TEXT
Return tag text.- See Also:
-
ALLOWED_TYPES
Set of allowed Tokens tags in summary java doc. -
forbiddenSummaryFragments
Specify the regexp for forbidden summary fragments. -
period
Specify the period symbol. Used to check the first sentence ends with a period. Periods that are not followed by a whitespace character are ignored (eg. the period in v1.0). Because some periods include whitespace built into the character, if this is set to a non-default value any period will end the sentence, whether it is followed by whitespace or not.
-
-
Constructor Details
-
SummaryJavadocCheck
public SummaryJavadocCheck()
-
-
Method Details
-
setForbiddenSummaryFragments
Setter to specify the regexp for forbidden summary fragments.- Parameters:
pattern- a pattern.- Since:
- 6.0
-
setPeriod
Setter to specify the period symbol. Used to check the first sentence ends with a period. Periods that are not followed by a whitespace character are ignored (eg. the period in v1.0). Because some periods include whitespace built into the character, if this is set to a non-default value any period will end the sentence, whether it is followed by whitespace or not.- Parameters:
period- period's value.- Since:
- 6.2
-
getDefaultJavadocTokens
Description copied from class:AbstractJavadocCheckReturns the default javadoc token types a check is interested in.- Specified by:
getDefaultJavadocTokensin classAbstractJavadocCheck- Returns:
- the default javadoc token types
- See Also:
-
getRequiredJavadocTokens
Description copied from class:AbstractJavadocCheckThe javadoc tokens that this check must be registered for.- Overrides:
getRequiredJavadocTokensin classAbstractJavadocCheck- Returns:
- the javadoc token set this must be registered for.
- See Also:
-
visitJavadocToken
Description copied from class:AbstractJavadocCheckCalled to process a Javadoc token.- Specified by:
visitJavadocTokenin classAbstractJavadocCheck- Parameters:
ast- the token to process
-
validateUntaggedSummary
Checks the javadoc text forperiodat end and forbidden fragments.- Parameters:
ast- the javadoc text node
-
getInlineTagNode
Gets the node for the inline tag if present.- Parameters:
javadoc- javadoc root node.- Returns:
- the node for the inline tag if present.
-
isDefinedFirst
Whether the{@summary}tag is defined first in the javadoc.- Parameters:
inlineSummaryTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAG- Returns:
trueif the{@summary}tag is defined first in the javadoc
-
isTextPresentInsideHtmlTag
Whether some text is present inside the HTML element or tag.- Parameters:
node- DetailNode of typeJavadocTokenTypes.HTML_TAGorJavadocTokenTypes.HTML_ELEMENT- Returns:
trueif some text is present inside the HTML element or tag
-
isInlineTagPresent
Checks if the inline tag node is present.- Parameters:
ast- ast node to check.- Returns:
- true, if the inline tag node is present.
-
getInlineTagNodeForAst
Returns an inline javadoc tag node that is within a html tag.- Parameters:
ast- html tag node.- Returns:
- inline summary javadoc tag node or null if no node is found.
-
isSummaryTag
Checks if the javadoc inline tag is{@summary}tag.- Parameters:
javadocInlineTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAG- Returns:
trueif inline tag is summary tag.
-
isInlineReturnTag
Checks if the first tag inside ast is{@return}tag.- Parameters:
javadocInlineTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAG- Returns:
trueif first tag is return tag.
-
isInlineTagWithName
Checks if the first tag inside ast is a tag with the given name.- Parameters:
javadocInlineTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAGname- name of inline tag.- Returns:
trueif first tag is a tag with the given name.
-
validateSummaryTag
Checks the inline summary (if present) forperiodat end and forbidden fragments.- Parameters:
inlineSummaryTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAG
-
validateInlineReturnTag
Checks the inline return for forbidden fragments.- Parameters:
inlineReturnTag- node of typeJavadocTokenTypes.JAVADOC_INLINE_TAG
-
getContentOfInlineCustomTag
Gets the content of inline custom tag.- Parameters:
inlineTag- inline tag node.- Returns:
- String consisting of the content of inline custom tag.
-
extractInlineTagContent
Extracts the content of inline custom tag recursively.- Parameters:
node- DetailNodecustomTagContent- content of custom tag
-
getVisibleContent
Gets the string that is visible to user in javadoc.- Parameters:
summary- entire content of summary javadoc.- Returns:
- string that is visible to user in javadoc.
-
containsForbiddenFragment
Tests if first sentence contains forbidden summary fragment.- Parameters:
firstSentence- string with first sentence.- Returns:
trueif first sentence contains forbidden summary fragment.
-
trimExcessWhitespaces
Trims the giventextof duplicate whitespaces.- Parameters:
text- the text to transform.- Returns:
- the finalized form of the text.
-
startsWithInheritDoc
Checks if the node starts with an {@inheritDoc}.- Parameters:
root- the root node to examine.- Returns:
trueif the javadoc starts with an {@inheritDoc}.
-
getSummarySentence
Finds and returns summary sentence.- Parameters:
ast- javadoc root node.- Returns:
- violation string.
-
getStringInsideTag
Get concatenated string within text of html tags.- Parameters:
result- javadoc stringdetailNode- javadoc tag node- Returns:
- java doc tag content appended in result
-
getFirstSentence
Finds the first sentence.- Parameters:
ast- The Javadoc root node.period- The configured period symbol.- Returns:
- An Optional containing the first sentence up to and excluding the period, or an empty Optional if no ending was found.
-
streamTextParts
Streams through all the text under the given node.- Parameters:
node- The Javadoc node to examine.- Returns:
- All the text in all nodes that have no child nodes.
-
findSentenceEnding
Finds the end of a sentence. The end of sentence detection here could be replaced in the future by Java's built-in BreakIterator class.- Parameters:
text- The string to search.period- The period character to find.- Returns:
- An Optional containing the string up to and excluding the period, or empty Optional if no ending was found.
-