Java checkstyle使我感到困惑和困惑。
package pmain;
/**
* Some text here.
*/
public class Main {
}
这就是我所拥有的所有代码。 Checkstyle显示“第一句应以句号结束”。在“/**”。
为什么CheckStyle产生此警告?
我需要使用的checkstyle配置是否已损坏?难道我做错了什么? “这里有些文字”不是第一句话吗?是“。”不是一个时期?
答案 0 :(得分:9)
第一句应以点结尾。
/**
*An abstract class that represents an algorithm.
*
* @author zhangtj
*
* @version 1.0
*/
会通过。
答案 1 :(得分:6)
刚刚在我的机器上进行了测试,实际上无法重现:我没有在句子末尾有一个圆点的警告。但是一旦我将其删除(并再次运行checkstyle),规则就会被正确触发,我会在/**
行上收到警告。
评论后的空白行没有区别。
仔细检查点是否真的是一个点,而不是“看起来”像点的其他字符。并且在您更改文件后仔细检查是否确实重新运行了checkstyle。它不会自动执行检查。
也许有人玩过checkstyle设置。实际上有两个属性可以控制这个规则:checkFirstSentence
,它是true或false,endOfSentenceFormat
是一个正则表达式,应该匹配句点。但是,如果规则集重新定义了该属性......;)
进一步阅读
答案 2 :(得分:5)
这让我恼火。要删除此添加:
...
<module name="JavadocStyle">
<property name="checkFirstSentence" value="false"/>
</module>
...
另外,对我来说,我完全删除了SummaryJavadoc
模块。
切换此检查。
请参阅: http://checkstyle.sourceforge.net/config_javadoc.html#JavadocStyle &安培; http://checkstyle.sourceforge.net/config_javadoc.html#SummaryJavadoc
答案 3 :(得分:2)
评论结束后的空格可能会导致“瘦”或“。”
答案 4 :(得分:1)
您的问题与该行末尾缺少的.
有关。要解决此问题,您需要覆盖period
属性。其默认值为.
字符。
根据最新的Checkstyle documentation,建议使用以下配置来摆脱“ First sentence should end with a period.
”警告:
<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<])|([.?!:]$)
新值,在行尾接受任何数字和字母:
([.?!:][ \t\n\r\f<])|([\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<])|([\d\w.?!:]$)"/>
</module>
答案 5 :(得分:0)
我使用2行来避免此警告。例如:
/**
* Let's call this as the first sentence,
* here the second one.
*/