public class SummaryJavadocCheck extends AbstractJavadocCheck
Checks that
Javadoc summary sentence does not contain phrases that are not recommended to use.
Summaries that contain only the {@inheritDoc} tag are skipped.
Check also violate Javadoc that does not contain first sentence.
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 is boolean.
Default value is false.
forbiddenSummaryFragments - Specify the regexp for forbidden summary fragments.
Type is java.util.regex.Pattern.
Default value is "^$".
period - Specify the period symbol at the end of first javadoc sentence.
Type is java.lang.String.
Default value is ".".
To configure the default check to validate that first sentence is not empty and first sentence is not missing:
<module name="SummaryJavadocCheck"/>
Example of {@inheritDoc} without summary.
public class Test extends Exception {
//Valid
/**
* {@inheritDoc}
*/
public String ValidFunction(){
return "";
}
//Violation
/**
*
*/
public String InvalidFunction(){
return "";
}
}
Example of non permitted empty javadoc for Inline Summary Javadoc.
public class Test extends Exception {
/**
* {@summary }
*/
public String InvalidFunctionOne(){ // violation
return "";
}
/**
* {@summary <p> <p/>}
*/
public String InvalidFunctionTwo(){ // violation
return "";
}
/**
* {@summary <p>This is summary for validFunctionThree.<p/>}
*/
public void validFunctionThree(){} // ok
}
To ensure that summary do not contain phrase like "This method returns", use following config:
<module name="SummaryJavadocCheck">
<property name="forbiddenSummaryFragments"
value="^This method returns.*"/>
</module>
To specify period symbol at the end of first javadoc sentence:
<module name="SummaryJavadocCheck"> <property name="period" value="。"/> </module>
Example of period property.
public class TestClass {
/**
* This is invalid java doc.
*/
void invalidJavaDocMethod() {
}
/**
* This is valid java doc。
*/
void validJavaDocMethod() {
}
}
Example of period property for inline summary javadoc.
public class TestClass {
/**
* {@summary This is invalid java doc.}
*/
public void invalidJavaDocMethod() { // violation
}
/**
* {@summary This is valid java doc。}
*/
public void validJavaDocMethod() { // ok
}
}
Example of inline summary javadoc with HTML tags.
public class Test {
/**
* {@summary First sentence is normally the summary.
* Use of html tags:
* <ul>
* <li>Item one.</li>
* <li>Item two.</li>
* </ul>}
*/
public void validInlineJavadoc() { // ok
}
}
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
javadoc.missed.html.close
javadoc.parse.rule.error
javadoc.wrong.singleton.html.tag
summary.first.sentence
summary.javaDoc
summary.javaDoc.missing
summary.javaDoc.missing.period
AutomaticBean.OutputStreamOptions| Modifier and Type | Field and Description |
|---|---|
private static java.util.Set<java.lang.Integer> |
ALLOWED_TYPES
Set of allowed Tokens tags in summary java doc.
|
private java.util.regex.Pattern |
forbiddenSummaryFragments
Specify the regexp for forbidden summary fragments.
|
private static java.util.regex.Pattern |
HTML_ELEMENTS
This regexp is used to remove html tags, whitespace, and asterisks from a string.
|
private static java.util.regex.Pattern |
JAVADOC_MULTILINE_TO_SINGLELINE_PATTERN
This regexp is used to convert multiline javadoc to single line without stars.
|
static java.lang.String |
MSG_SUMMARY_FIRST_SENTENCE
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_SUMMARY_JAVADOC
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_SUMMARY_JAVADOC_MISSING
A key is pointing to the warning message text in "messages.properties"
file.
|
static java.lang.String |
MSG_SUMMARY_MISSING_PERIOD
A key is pointing to the warning message text in "messages.properties" file.
|
private java.lang.String |
period
Specify the period symbol at the end of first javadoc sentence.
|
private static java.lang.String |
PERIOD
Period literal.
|
private static java.util.regex.Pattern |
SUMMARY_PATTERN
This regexp is used to extract the content of a summary javadoc tag.
|
private static java.lang.String |
SUMMARY_TEXT
Summary tag text.
|
MSG_JAVADOC_MISSED_HTML_CLOSE, MSG_JAVADOC_PARSE_RULE_ERROR, MSG_JAVADOC_WRONG_SINGLETON_TAG| Constructor and Description |
|---|
SummaryJavadocCheck() |
| Modifier and Type | Method and Description |
|---|---|
private boolean |
containsForbiddenFragment(java.lang.String firstSentence)
Tests if first sentence contains forbidden summary fragment.
|
private static boolean |
containsSummaryTag(DetailNode javadoc)
Checks if summary tag present.
|
int[] |
getDefaultJavadocTokens()
Returns the default javadoc token types a check is interested in.
|
private static java.lang.String |
getFirstSentence(DetailNode ast)
Finds and returns first sentence.
|
private java.lang.String |
getInlineSummary()
Gets entire content of summary tag.
|
private static DetailNode |
getInlineTagNodeWithinHtmlElement(DetailNode ast)
Returns an inline javadoc tag node that is within a html tag.
|
int[] |
getRequiredJavadocTokens()
The javadoc tokens that this check must be registered for.
|
private static java.lang.String |
getStringInsideTag(java.lang.String result,
DetailNode detailNode)
Get concatenated string within text of html tags.
|
private static java.lang.String |
getSummarySentence(DetailNode ast)
Finds and returns summary sentence.
|
private static java.lang.String |
getVisibleContent(java.lang.String summary)
Gets the string that is visible to user in javadoc.
|
private static boolean |
isInlineTagPresent(DetailNode ast)
Checks if the inline tag node is present.
|
private static boolean |
isPeriodAtEnd(java.lang.String sentence,
java.lang.String period)
Checks if the string ends with period.
|
private static boolean |
isSummaryTag(DetailNode javadoc)
Checks if the first tag inside ast is summary tag.
|
void |
setForbiddenSummaryFragments(java.util.regex.Pattern pattern)
Setter to specify the regexp for forbidden summary fragments.
|
void |
setPeriod(java.lang.String period)
Setter to specify the period symbol at the end of first javadoc sentence.
|
private static boolean |
startsWithInheritDoc(DetailNode root)
Checks if the node starts with an {@inheritDoc}.
|
private static java.lang.String |
trimExcessWhitespaces(java.lang.String text)
Trims the given
text of duplicate whitespaces. |
private void |
validateSummaryTag(DetailNode ast)
Checks the inline summary (if present) for
period at end and forbidden fragments. |
void |
visitJavadocToken(DetailNode ast)
Called to process a Javadoc token.
|
acceptJavadocWithNonTightHtml, beginJavadocTree, beginTree, destroy, finishJavadocTree, finishTree, getAcceptableJavadocTokens, getAcceptableTokens, getBlockCommentAst, getDefaultTokens, getRequiredTokens, init, isCommentNodesRequired, leaveJavadocToken, setJavadocTokens, setViolateExecutionOnNonTightHtml, visitTokenclearViolations, getFileContents, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, leaveToken, log, log, log, setFileContents, setTabWidth, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final java.lang.String MSG_SUMMARY_FIRST_SENTENCE
public static final java.lang.String MSG_SUMMARY_JAVADOC
public static final java.lang.String MSG_SUMMARY_JAVADOC_MISSING
public static final java.lang.String MSG_SUMMARY_MISSING_PERIOD
private static final java.util.regex.Pattern JAVADOC_MULTILINE_TO_SINGLELINE_PATTERN
private static final java.util.regex.Pattern HTML_ELEMENTS
private static final java.util.regex.Pattern SUMMARY_PATTERN
private static final java.lang.String PERIOD
private static final java.lang.String SUMMARY_TEXT
private static final java.util.Set<java.lang.Integer> ALLOWED_TYPES
private java.util.regex.Pattern forbiddenSummaryFragments
private java.lang.String period
public SummaryJavadocCheck()
public void setForbiddenSummaryFragments(java.util.regex.Pattern pattern)
pattern - a pattern.public void setPeriod(java.lang.String period)
period - period's value.public int[] getDefaultJavadocTokens()
AbstractJavadocCheckgetDefaultJavadocTokens in class AbstractJavadocCheckJavadocTokenTypespublic int[] getRequiredJavadocTokens()
AbstractJavadocCheckgetRequiredJavadocTokens in class AbstractJavadocCheckJavadocTokenTypespublic void visitJavadocToken(DetailNode ast)
AbstractJavadocCheckvisitJavadocToken in class AbstractJavadocCheckast - the token to processprivate static boolean containsSummaryTag(DetailNode javadoc)
javadoc - javadoc root node.true if first sentence contains @summary tag.private static boolean isInlineTagPresent(DetailNode ast)
ast - ast node to check.private static DetailNode getInlineTagNodeWithinHtmlElement(DetailNode ast)
ast - html tag node.private static boolean isSummaryTag(DetailNode javadoc)
javadoc - root node.true if first tag is summary tag.private void validateSummaryTag(DetailNode ast)
period at end and forbidden fragments.ast - javadoc root node.private java.lang.String getInlineSummary()
private static java.lang.String getVisibleContent(java.lang.String summary)
summary - entire content of summary javadoc.private static boolean isPeriodAtEnd(java.lang.String sentence, java.lang.String period)
sentence - string to check for period at end.period - string to check within sentence.true if sentence ends with period.private boolean containsForbiddenFragment(java.lang.String firstSentence)
firstSentence - string with first sentence.true if first sentence contains forbidden summary fragment.private static java.lang.String trimExcessWhitespaces(java.lang.String text)
text of duplicate whitespaces.text - the text to transform.private static boolean startsWithInheritDoc(DetailNode root)
root - the root node to examine.true if the javadoc starts with an {@inheritDoc}.private static java.lang.String getSummarySentence(DetailNode ast)
ast - javadoc root node.private static java.lang.String getStringInsideTag(java.lang.String result, DetailNode detailNode)
result - javadoc stringdetailNode - javadoc tag nodeprivate static java.lang.String getFirstSentence(DetailNode ast)
ast - Javadoc root node.Copyright © 2001-2022. All Rights Reserved.