21

Java checkstyle confuses and baffles me.

package pmain;

/**
 * Some text here.
 */

public class Main {

}

This is literally all of the code I have. Checkstyle displays a "First sentence should end with a period." at the "/**".

Why does CheckStyle produce this warning?

Could the checkstyle config I'm required to use be broken? Am I doing something wrong? Is "Some text here" not the first sentence? Is "." not a period?

4

6 回答 6

22

第一句话应该以点结尾。

/**
 *An abstract class that represents an algorithm.
 *
 * @author zhangtj
 *
 * @version 1.0
*/

会通过的。

于 2012-12-29T07:28:58.473 回答
6

刚刚在我的机器上进行了测试,实际上无法重现:我没有在句末收到带点的警告。但是一旦我删除它(并再次运行 checkstyle),规则就会正确触发,并且我会收到警告/**

评论后的空白行没有任何区别。

仔细检查该点是否真的是一个点,而不是“看起来”像一个点的其他字符。并仔细检查您在更改文件后是否真的重新运行了 checkstyle。它不会自动执行检查。


也许有人玩过 checkstyle 设置。实际上有两个属性控制这个规则:checkFirstSentence一个是真或假,endOfSentenceFormat一个是正则表达式,应该匹配句点。但是,如果规则集重新定义了该属性... ;)

延伸阅读

于 2012-10-29T21:21:27.670 回答
5

这让我很生气。要删除此添加:

...

<module name="JavadocStyle">
   <property name="checkFirstSentence" value="false"/>
</module>

...

而且,对我来说,我完全删除了该SummaryJavadoc模块。

在您的 checkstyle.xml 中关闭此检查。

请参阅: http ://checkstyle.sourceforge.net/config_javadoc.html#JavadocStyle & http://checkstyle.sourceforge.net/config_javadoc.html#SummaryJavadoc

于 2016-04-27T16:12:03.157 回答
3

注释或“。”结尾后的空格可能会导致变薄。

于 2014-06-05T17:30:28.163 回答
2

您的问题与.行尾的缺失有关。要解决此问题,您需要覆盖该period属性。它的默认值是.字符。

根据最新的Checkstyle 文档,这是摆脱“<code>第一句应该以句点结尾”的推荐配置。警告:

<module name="SummaryJavadoc">
    <property name="forbiddenSummaryFragments" value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9]+[}]( is a )"/>
    <property name="period" value=""/>
</module>

如果上述解决方案不起作用,您可以使用以下替代解决方案:

覆盖endOfSentenceFormat属性的默认值。

默认值:

([.?!:][ \t\n\r\f&lt;])|([.?!:]$)

新值,接受行尾的任何数字和字母:

([.?!:][ \t\n\r\f&lt;])|([\d\w.?!:]$)

完成 Checksytle 配置:

<module name="JavadocStyle">
    <property name="scope" value="public"/>
    <property name="checkEmptyJavadoc" value="true"/>
    <property name="tokens" value="ANNOTATION_DEF, ANNOTATION_FIELD_DEF, CLASS_DEF, CTOR_DEF, ENUM_DEF, INTERFACE_DEF, METHOD_DEF, PACKAGE_DEF, VARIABLE_DEF"/>
    <property name="endOfSentenceFormat" value="([.?!:][ \t\n\r\f&lt;])|([\d\w.?!:]$)"/>
</module>
于 2020-05-13T12:33:58.120 回答
0

我使用 2 行来避免这个警告。例如:

/**
 * Let's call this as the first sentence,
 * here the second one.
*/
于 2017-11-11T08:23:02.053 回答