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.
- 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 String
Default period literal.private Pattern
Specify the regexp for forbidden summary fragments.private static final Pattern
This regexp is used to remove html tags, whitespace, and asterisks from a string.private static final Pattern
This regexp is used to convert multiline javadoc to single-line without stars.static final String
A key is pointing to the warning message text in "messages.properties" file.static final String
A key is pointing to the warning message text in "messages.properties" file.static final String
A key is pointing to the warning message text in "messages.properties" file.static final String
A key is pointing to the warning message text in "messages.properties" file.private String
Specify the period symbol.private boolean
Whether to validate untagged summary text in Javadoc.Fields inherited from class com.puppycrawl.tools.checkstyle.checks.javadoc.AbstractJavadocCheck
MSG_JAVADOC_PARSE_RULE_ERROR, MSG_KEY_UNCLOSED_HTML_TAG
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate boolean
containsForbiddenFragment
(String firstSentence) Tests if first sentence contains forbidden summary fragment.findSentenceEnding
(String text, String period) Finds the end of a sentence.static String
getContentOfInlineCustomTag
(DetailNode descriptionNode) 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.int[]
The javadoc tokens that this check must be registered for.private static String
getStringInsideHtmlTag
(String result, DetailNode detailNode) Get concatenated string within text of html tags.private static String
Finds and returns summary sentence.private static String
getVisibleContent
(String summary) Gets the string that is visible to user in javadoc.private static boolean
isDefinedFirst
(DetailNode inlineTagNode) Whether the{@summary}
tag is defined first in the javadoc.static boolean
Whether some text is present inside the HTML element or tag.private static boolean
isInlineReturnTag
(DetailNode javadocInlineTag) Checks if the given node is an inline return node.private static boolean
isSummaryTag
(DetailNode javadocInlineTag) Checks if the given node is an inline summary tag.void
Called after all the child nodes have been process.void
setForbiddenSummaryFragments
(Pattern pattern) Setter to specify the regexp for forbidden summary fragments.void
Setter to specify the period symbol.private static boolean
Checks if the node starts with an {@inheritDoc}.streamTextParts
(DetailNode node) Streams through all the text under the given node.private static String
trimExcessWhitespaces
(String text) Trims the giventext
of duplicate whitespaces.private void
validateInlineReturnTag
(DetailNode inlineReturnTag) Checks the inline return for forbidden fragments.private void
validateSummaryTag
(DetailNode inlineSummaryTag) Checks the inline summary (if present) forperiod
at end and forbidden fragments.private void
Checks the javadoc text forperiod
at end and forbidden fragments.void
Called 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, setJavadocTokens, setViolateExecutionOnNonTightHtml, visitToken
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 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:
-
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. -
shouldValidateUntaggedSummary
Whether to validate untagged summary text in Javadoc.
-
-
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:AbstractJavadocCheck
Returns the default javadoc token types a check is interested in.- Specified by:
getDefaultJavadocTokens
in classAbstractJavadocCheck
- Returns:
- the default javadoc token types
- See Also:
-
getRequiredJavadocTokens
Description copied from class:AbstractJavadocCheck
The javadoc tokens that this check must be registered for.- Overrides:
getRequiredJavadocTokens
in classAbstractJavadocCheck
- Returns:
- the javadoc token set this must be registered for.
- See Also:
-
visitJavadocToken
Description copied from class:AbstractJavadocCheck
Called to process a Javadoc token.- Specified by:
visitJavadocToken
in classAbstractJavadocCheck
- Parameters:
ast
- the token to process
-
leaveJavadocToken
Description copied from class:AbstractJavadocCheck
Called after all the child nodes have been process.- Overrides:
leaveJavadocToken
in classAbstractJavadocCheck
- Parameters:
ast
- the token leaving
-
validateUntaggedSummary
Checks the javadoc text forperiod
at end and forbidden fragments.- Parameters:
ast
- the javadoc text node
-
isDefinedFirst
Whether the{@summary}
tag is defined first in the javadoc.- Parameters:
inlineTagNode
- node of typeJavadocCommentsTokenTypes.JAVADOC_INLINE_TAG
- Returns:
true
if the{@summary}
tag is defined first in the javadoc
-
isHtmlTagWithoutText
Whether some text is present inside the HTML element or tag.- Parameters:
node
- DetailNode of typeJavadocCommentsTokenTypes.HTML_ELEMENT
- Returns:
true
if some text is present inside the HTML element
-
isSummaryTag
Checks if the given node is an inline summary tag.- Parameters:
javadocInlineTag
- node- Returns:
true
if inline tag is of typeJavadocCommentsTokenTypes.SUMMARY_INLINE_TAG
-
isInlineReturnTag
Checks if the given node is an inline return node.- Parameters:
javadocInlineTag
- node- Returns:
true
if inline tag is of typeJavadocCommentsTokenTypes.RETURN_INLINE_TAG
-
validateSummaryTag
Checks the inline summary (if present) forperiod
at end and forbidden fragments.- Parameters:
inlineSummaryTag
- node of typeJavadocCommentsTokenTypes.SUMMARY_INLINE_TAG
-
validateInlineReturnTag
Checks the inline return for forbidden fragments.- Parameters:
inlineReturnTag
- node of typeJavadocCommentsTokenTypes.RETURN_INLINE_TAG
-
getContentOfInlineCustomTag
Gets the content of inline custom tag.- Parameters:
descriptionNode
- node of typeJavadocCommentsTokenTypes.DESCRIPTION
- Returns:
- String consisting of the content of inline 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:
true
if first sentence contains forbidden summary fragment.
-
trimExcessWhitespaces
Trims the giventext
of 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:
true
if the javadoc starts with an {@inheritDoc}.
-
getSummarySentence
Finds and returns summary sentence.- Parameters:
ast
- javadoc root node.- Returns:
- violation string.
-
getStringInsideHtmlTag
Get concatenated string within text of html tags.- Parameters:
result
- javadoc stringdetailNode
- htmlContent 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.
-