From a59ead9b6c8699ab6d9be18a556e570927774e9d Mon Sep 17 00:00:00 2001 From: 0blivious Date: Mon, 2 Mar 2020 00:59:04 +0800 Subject: [PATCH] Issue #7183: add JavadocMissingWhitespaceAfterAsteriskCheck --- .ci/jsoref-spellchecker/whitelist.words | 1 + config/checkstyle_checks.xml | 1 + .../checkstyle/PackageObjectFactory.java | 2 + ...ocMissingWhitespaceAfterAsteriskCheck.java | 131 ++++++++++++++++++ .../filters/SuppressionXpathFilter.java | 3 + .../checks/javadoc/messages.properties | 1 + .../checks/javadoc/messages_de.properties | 1 + .../checks/javadoc/messages_es.properties | 1 + .../checks/javadoc/messages_fi.properties | 1 + .../checks/javadoc/messages_fr.properties | 1 + .../checks/javadoc/messages_ja.properties | 1 + .../checks/javadoc/messages_pt.properties | 1 + .../checks/javadoc/messages_tr.properties | 1 + .../checks/javadoc/messages_zh.properties | 1 + ...ssingWhitespaceAfterAsteriskCheckTest.java | 65 +++++++++ .../internal/XpathRegressionTest.java | 1 + ...JavadocMissingWhitespaceAfterAsterisk.java | 46 ++++++ src/xdocs/checks.xml | 5 + src/xdocs/config_filters.xml | 1 + src/xdocs/config_javadoc.xml | 110 +++++++++++++++ 20 files changed, 375 insertions(+) create mode 100644 src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheck.java create mode 100644 src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheckTest.java create mode 100644 src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmissingwhitespaceafterasterisk/InputJavadocMissingWhitespaceAfterAsterisk.java diff --git a/.ci/jsoref-spellchecker/whitelist.words b/.ci/jsoref-spellchecker/whitelist.words index 1287d1daea24..5219fe346de0 100644 --- a/.ci/jsoref-spellchecker/whitelist.words +++ b/.ci/jsoref-spellchecker/whitelist.words @@ -641,6 +641,7 @@ javadocblocktaglocation javadoccontentlocation javadocdetailnodeparser javadocmethod +javadocmissingwhitespaceafterasterisk javadocpackage javadocparagraph javadocpropertiesgenerator diff --git a/config/checkstyle_checks.xml b/config/checkstyle_checks.xml index b339309d5cc2..29eec0307ce9 100644 --- a/config/checkstyle_checks.xml +++ b/config/checkstyle_checks.xml @@ -513,6 +513,7 @@ + diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java b/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java index d5820a6a667f..6323aa361602 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/PackageObjectFactory.java @@ -636,6 +636,8 @@ private static void fillChecksFromJavadocPackage() { BASE_PACKAGE + ".checks.javadoc.JavadocContentLocationCheck"); NAME_TO_FULL_MODULE_NAME.put("JavadocMethodCheck", BASE_PACKAGE + ".checks.javadoc.JavadocMethodCheck"); + NAME_TO_FULL_MODULE_NAME.put("JavadocMissingWhitespaceAfterAsteriskCheck", + BASE_PACKAGE + ".checks.javadoc.JavadocMissingWhitespaceAfterAsteriskCheck"); NAME_TO_FULL_MODULE_NAME.put("JavadocPackageCheck", BASE_PACKAGE + ".checks.javadoc.JavadocPackageCheck"); NAME_TO_FULL_MODULE_NAME.put("JavadocParagraphCheck", diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheck.java new file mode 100644 index 000000000000..cb94800e8e2e --- /dev/null +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheck.java @@ -0,0 +1,131 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2020 the original author or authors. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//////////////////////////////////////////////////////////////////////////////// + +package com.puppycrawl.tools.checkstyle.checks.javadoc; + +import com.puppycrawl.tools.checkstyle.StatelessCheck; +import com.puppycrawl.tools.checkstyle.api.DetailAST; +import com.puppycrawl.tools.checkstyle.api.DetailNode; +import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes; +import com.puppycrawl.tools.checkstyle.utils.JavadocUtil; +import com.puppycrawl.tools.checkstyle.utils.TokenUtil; + +/** + *

+ * Checks that at there is least one whitespace after the leading asterisk. + *

+ *
    + *
  • + * Property {@code violateExecutionOnNonTightHtml} - Control when to print violations + * if the Javadoc being examined by this check violates the tight html rules defined at + * Tight-HTML Rules. + * Default value is {@code false}. + *
  • + *
+ *

+ * To configure the default check: + *

+ *
+ * <module name="JavadocMissingWhitespaceAfterAsterisk"/>
+ * 
+ *

+ * Code Example: + *

+ *
+ * class TestClass {
+ *   /**
+ *     *This is invalid java doc.
+ *     */
+ *   void invalidJavaDocMethod() {
+ *   }
+  *   /**
+ *     * This is valid java doc.
+ *     */
+ *   void validJavaDocMethod() {
+ *   }
+ *   /**This is invalid single linejava doc. */
+ *   void InvalidSingleLineJavaDocMethod() {
+ *   }
+ * }
+ * 
+ * + * @since 8.31 + */ +@StatelessCheck +public class JavadocMissingWhitespaceAfterAsteriskCheck extends AbstractJavadocCheck { + + /** + * A key is pointing to the warning message text in "messages.properties" file. + */ + public static final String MSG_KEY = "javadoc.missing.whitespace"; + + @Override + public int[] getDefaultJavadocTokens() { + return new int[] { + JavadocTokenTypes.JAVADOC, + }; + } + + @Override + public int[] getRequiredJavadocTokens() { + return getAcceptableJavadocTokens(); + } + + @Override + public void visitJavadocToken(DetailNode javadoc) { + if (isSingleLineJavadoc(getBlockCommentAst())) { + checkWhitespaceAfterAsterisk(JavadocUtil.getFirstChild(javadoc)); + } + else { + for (DetailNode node : javadoc.getChildren()) { + if (node.getType() == JavadocTokenTypes.LEADING_ASTERISK) { + final DetailNode nextSibling = JavadocUtil.getNextSibling(node); + if (nextSibling.getType() != JavadocTokenTypes.EOF) { + checkWhitespaceAfterAsterisk(nextSibling); + } + } + } + } + } + + /** + * Checks if there is at least one whitespace after leading asterisk. + * + * @param node the node after the leading asterisk. + */ + private void checkWhitespaceAfterAsterisk(DetailNode node) { + final String tagText = node.getText(); + + if (!Character.isWhitespace(tagText.charAt(0))) { + log(node.getLineNumber(), node.getColumnNumber(), MSG_KEY); + } + } + + /** + * Checks if comment is single line comment. + * + * @param blockCommentStart the AST tree in which a block comment starts + * @return true, if comment is single line comment. + */ + private static boolean isSingleLineJavadoc(DetailAST blockCommentStart) { + final DetailAST blockCommentEnd = blockCommentStart.getLastChild(); + return TokenUtil.areOnSameLine(blockCommentStart, blockCommentEnd); + } + +} diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathFilter.java b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathFilter.java index 29c505fed1ae..093a81a0df5b 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathFilter.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionXpathFilter.java @@ -199,6 +199,9 @@ * JavadocBlockTagLocation * *
  • + * JavadocMissingWhitespaceAfterAsterisk + *
  • + *
  • * JavadocParagraph *
  • *
  • diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages.properties index f0881b5f5fae..c0029376a836 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Invalid use of the '{'@inheritDoc'}' tag. javadoc.legacyPackageHtml=Legacy package.html file should be removed. javadoc.missed.html.close=Javadoc comment at column {0} has parse error. Missed HTML close tag ''{1}''. Sometimes it means that close tag missed for one of previous tags. javadoc.missing=Missing a Javadoc comment. +javadoc.missing.whitespace=Missing a whitespace after the leading asterisk. javadoc.noPeriod=First sentence should end with a period. javadoc.packageInfo=Missing package-info.java file. javadoc.paragraph.line.before=

    tag should be preceded with an empty line. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_de.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_de.properties index 54a43a8f57bf..9829cbb343c5 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_de.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_de.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Unerlaubte Verwendung des Tags '{'@inheritDoc'}'. javadoc.legacyPackageHtml=Die veraltete Datei package.html sollte entfernt werden. javadoc.missed.html.close=Der Javadoc-Kommentar an Position {0} führt zu einem Parserfehler. Fehlendes schließendes HTML-Tag ''{1}''. Manchmal bedeutet dies, dass das schließende Tag eines vorgehenden Tags fehlt. javadoc.missing=Es fehlt ein Javadoc-Kommentar. +javadoc.missing.whitespace=Nach dem Sternchen fehlt ein Leerzeichen. javadoc.noPeriod=Der erste Satz sollte mit einem Punkt enden. javadoc.packageInfo=Es fehlt eine package-info.java. javadoc.paragraph.line.before=Einem

    -Tag im Javadoc sollte eine leere Zeile vorangestellt werden. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_es.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_es.properties index 4cf75c105b2b..6fadafa25588 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_es.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_es.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Uso no válido del '{'inheritDoc '}' etiqueta. javadoc.legacyPackageHtml=Archivo package.html legado debe ser eliminado. javadoc.missed.html.close=Javadoc comentario en la columna {0} tiene parse error. Perdidas HTML cerca etiqueta ''{1}''. A veces esto significa que cerca de la etiqueta se perdió por una de las etiquetas anteriores. javadoc.missing=Falta el comentario Javadoc. +javadoc.missing.whitespace=Falta un espacio en blanco después del asterisco principal. javadoc.noPeriod=La primera frase debería finalizar con un punto. javadoc.packageInfo=Falta el archivo package-info.java. javadoc.paragraph.line.before=

    etiqueta debe ir precedida de una línea vacía. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fi.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fi.properties index ddbaddc7af73..9162337168a8 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fi.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fi.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Virheellinen käyttö '{'inheritDoc '}' tag. javadoc.legacyPackageHtml=Legacy package.html tiedosto tulisi poistaa. javadoc.missed.html.close=Javadoc kommentti sarakkeessa {0} on Jäsennysvirhe. Missed HTML lähellä tag ''{1}''. Joskus se tarkoittaa, että lähellä tag jäi yhden edellisen tunnisteita. javadoc.missing=Javadoc-kommentti puuttuu. +javadoc.missing.whitespace=Valkoinen tila puuttuu edessä olevan tähden jälkeen. javadoc.noPeriod=Ensimmäinen virke pitäisi päättyä aikana. javadoc.packageInfo=Puuttuu package-info.java tiedosto. javadoc.paragraph.line.before=

    tag pitäisi edeltää tyhjä rivi. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fr.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fr.properties index 4d0952535d50..b582258a84e9 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fr.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_fr.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Utilisation invalide de la balise '{'@inheritDoc '}'. javadoc.legacyPackageHtml=L''ancien fichier package.html doit être supprimé. javadoc.missed.html.close=Le commentaire Javadoc à la colonne {0} ne peut être analysé. La balise HTML fermante ''{1}'' n''a pas été trouvée. Parfois, cela signifie qu''une des balises fermantes précédentes est manquante. javadoc.missing=Commentaire Javadoc manquant. +javadoc.missing.whitespace=Manque un espace après l'astérisque de tête. javadoc.noPeriod=La première ligne de la Javadoc doit se terminer avec un point. javadoc.packageInfo=Le fichier package-info.java est manquant. javadoc.paragraph.line.before=La balise

    doit être précédée d''une ligne vide. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_ja.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_ja.properties index 8b41deae92e6..499840f8ef8f 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_ja.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_ja.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc='{' @inheritDoc '}'タグの使用が無効です。 javadoc.legacyPackageHtml=古い形式のpackage.htmlファイルは削除してください。 javadoc.missed.html.close={0} 桁目の Javadoc コメントでパースエラーが発生しました。HTML タグ ''{1}'' が閉じていません。どこかもっと前のタグが閉じていない可能性もあります。 javadoc.missing=Javadoc コメントがありません。 +javadoc.missing.whitespace=先頭のアスタリスクの後に空白がありません。 javadoc.noPeriod=最初の一文はピリオドで終わらなければなりません。 javadoc.packageInfo=package-info.javaファイルがありません。 javadoc.paragraph.line.before=

    タグの前には空行を入れてください。 diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_pt.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_pt.properties index 08f3e618ed89..c70bbcaa71d8 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_pt.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_pt.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc=Uso inválido da tag '{'inheritDoc '}'. javadoc.legacyPackageHtml=O arquivo package.html legado deve ser removido. javadoc.missed.html.close=O comentário de Javadoc na coluna {0} tem erro sintático. Faltou uma etiqueta de fechamento HTML ''{1}''. Às vezes, isso significa que uma etiqueta de fechamento foi esquecida em uma das etiquetas HTML anteriores. javadoc.missing=Falta o comentário Javadoc. +javadoc.missing.whitespace=Falta um espaço em branco após o asterisco inicial. javadoc.noPeriod=A primeira frase deve acabar num ponto final. javadoc.packageInfo=O arquivo package-info.java está faltando. javadoc.paragraph.line.before=A tag

    deveria ser precedida por uma linha vazia. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_tr.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_tr.properties index 1e3abcfabda6..a7c8dae599dd 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_tr.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_tr.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc='{'@inheritDoc'}' etiketi kullanımı geçersiz. javadoc.legacyPackageHtml=Eskide kalan package.html dosyaları kaldırılmalı. javadoc.missed.html.close=Sütununda Javadoc comment {0} hatası ayrıştırmak vardır. Cevapsız HTML yakın etiketi ''{1}'' Bazen yakın etiketi önceki etiketler biri için kaçırmış demektir. javadoc.missing=Javadoc açıklaması eksik. +javadoc.missing.whitespace=Önde gelen yıldız işaretinden sonra boşluk bırakma. javadoc.noPeriod=İlk cümle nokta ile bitmeli. javadoc.packageInfo=package-info.java dosyası eksik. javadoc.paragraph.line.before=

    etiketi boş bir çizgi ile gelmelidir. diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_zh.properties b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_zh.properties index 1e2ea4f2b64d..6f44cc2900e2 100644 --- a/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_zh.properties +++ b/src/main/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/messages_zh.properties @@ -13,6 +13,7 @@ javadoc.invalidInheritDoc='{'@inheritDoc'}' 标签使用方式错误。 javadoc.legacyPackageHtml=文件 package.html 应被删除。 javadoc.missed.html.close=Javadoc 第 {0} 个字符解析错误。缺少 HTML 闭合标签: ''{1}''。 有时这代表前一标签未闭合。 javadoc.missing=缺少 Javadoc 。 +javadoc.missing.whitespace=前导星号后缺少空格。 javadoc.noPeriod=Javadoc 首句应以句号结尾。 javadoc.packageInfo=缺少 package-info.java 文件。 javadoc.paragraph.line.before=

    标签前应有空行。 diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheckTest.java new file mode 100644 index 000000000000..d2eafe2bbb3f --- /dev/null +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMissingWhitespaceAfterAsteriskCheckTest.java @@ -0,0 +1,65 @@ +//////////////////////////////////////////////////////////////////////////////// +// checkstyle: Checks Java source code for adherence to a set of rules. +// Copyright (C) 2001-2020 the original author or authors. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +//////////////////////////////////////////////////////////////////////////////// + +package com.puppycrawl.tools.checkstyle.checks.javadoc; + +import static com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocMissingWhitespaceAfterAsteriskCheck.MSG_KEY; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; + +import org.junit.jupiter.api.Test; + +import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport; +import com.puppycrawl.tools.checkstyle.DefaultConfiguration; +import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes; + +public class JavadocMissingWhitespaceAfterAsteriskCheckTest + extends AbstractModuleTestSupport { + + @Override + protected String getPackageLocation() { + return "com/puppycrawl/tools/checkstyle/checks/javadoc" + + + "/javadocmissingwhitespaceafterasterisk"; + } + + @Test + public void testGetAcceptableTokens() { + final JavadocMissingWhitespaceAfterAsteriskCheck checkObj = + new JavadocMissingWhitespaceAfterAsteriskCheck(); + final int[] expected = { + JavadocTokenTypes.JAVADOC, + }; + assertArrayEquals(expected, checkObj.getAcceptableJavadocTokens(), + "Default acceptable tokens are invalid"); + } + + @Test + public void testDefault() throws Exception { + final DefaultConfiguration checkConfig = + createModuleConfig(JavadocMissingWhitespaceAfterAsteriskCheck.class); + final String[] expected = { + "16:7: " + getCheckMessage(MSG_KEY), + "22:7: " + getCheckMessage(MSG_KEY), + "38:8: " + getCheckMessage(MSG_KEY), + "41:8: " + getCheckMessage(MSG_KEY), + }; + verify(checkConfig, getPath("InputJavadocMissingWhitespaceAfterAsterisk.java"), expected); + } + +} diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java index 092a63dfd480..68fe5efcc10b 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/internal/XpathRegressionTest.java @@ -110,6 +110,7 @@ public class XpathRegressionTest extends AbstractModuleTestSupport { Collections.unmodifiableSet(new HashSet<>(Arrays.asList( "AtclauseOrder", "JavadocBlockTagLocation", + "JavadocMissingWhitespaceAfterAsterisk", "JavadocParagraph", "JavadocTagContinuationIndentation", "MissingDeprecated", diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmissingwhitespaceafterasterisk/InputJavadocMissingWhitespaceAfterAsterisk.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmissingwhitespaceafterasterisk/InputJavadocMissingWhitespaceAfterAsterisk.java new file mode 100644 index 000000000000..9a136aff35e1 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmissingwhitespaceafterasterisk/InputJavadocMissingWhitespaceAfterAsterisk.java @@ -0,0 +1,46 @@ +package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocmissingwhitespaceafterasterisk; +class InputJavadocMissingWhitespaceAfterAsterisk +{ + /** + * @see Something + * This is ok. + **/ + void foo() {} + + /** + * This is ok. + */ + void foo1() {} + + /** + *This is not ok. + */ + void foo2() {} + + /** + * This is not ok. + *@see Something + */ + void foo3() {} + + /** + * + * This is not ok. + */ + void foo4() {} + + /** This is ok. */ + void bar() {} + + /** @see Something */ + void bar1() {} + + /**@see Something*/ + void bar2() {} + + /**This is not ok. */ + void bar4() {} + + /** This is ok. **/ + void bar5() {} +} diff --git a/src/xdocs/checks.xml b/src/xdocs/checks.xml index c441c0206047..1b8a29eeb11e 100644 --- a/src/xdocs/checks.xml +++ b/src/xdocs/checks.xml @@ -404,6 +404,11 @@ JavadocMethod Checks the Javadoc of a method or constructor. + + + JavadocMissingWhitespaceAfterAsterisk + Checks that at there is least one whitespace after the leading asterisk. + JavadocPackage Checks that each Java package has a Javadoc file used for commenting. diff --git a/src/xdocs/config_filters.xml b/src/xdocs/config_filters.xml index 99a90c3a0d4b..2939f2a45db0 100644 --- a/src/xdocs/config_filters.xml +++ b/src/xdocs/config_filters.xml @@ -957,6 +957,7 @@ public class UserService {

    • AtclauseOrder
    • JavadocBlockTagLocation
    • +
    • JavadocMissingWhitespaceAfterAsterisk
    • JavadocParagraph
    • JavadocTagContinuationIndentation
    • MissingDeprecated
    • diff --git a/src/xdocs/config_javadoc.xml b/src/xdocs/config_javadoc.xml index 29c23b610ea5..38d7a5a1454f 100644 --- a/src/xdocs/config_javadoc.xml +++ b/src/xdocs/config_javadoc.xml @@ -847,6 +847,116 @@ public void doSomething9(File file) throws IOException { +
      +

      Since Checkstyle 8.31

      + +

      + Checks that at there is least one whitespace after the leading asterisk. +

      +
      + + +
      + + + + + + + + + + + + + + + +
      namedescriptiontypedefault valuesince
      violateExecutionOnNonTightHtml + Control when to print violations if the Javadoc being examined by this check + violates the tight html rules defined at + Tight-HTML Rules.Booleanfalse8.3
      +
      +
      + + +

      + To configure the default check: +

      + +<module name="JavadocMissingWhitespaceAfterAsterisk"/> + +

      + Code Example: +

      + +class TestClass { + /** + *This is invalid java doc. + */ + void invalidJavaDocMethod() { + } + /** + * This is valid java doc. + */ + void validJavaDocMethod() { + } + /**This is invalid single linejava doc. */ + void InvalidSingleLineJavaDocMethod() { + } +} + +
      + + + + + + + +

      + All messages can be customized if the default message doesn't suit you. + Please see the documentation to learn how to. +

      +
      + + +

      + com.puppycrawl.tools.checkstyle.checks.javadoc +

      +
      + + +

      + TreeWalker +

      +
      +
      +

      Since Checkstyle 5.0