CheckStyle 不会在接口方法上标记缺少的 JavaDoc
CheckStyle doesn't flag missing JavaDoc on Interface Methods
有谁知道为什么 CheckStyle 不在 Interface 方法上标记缺少 JavaDoc,而只在实际实现方法上标记?
假设我有以下内容,
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="minLineCount" value="2"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
这将报告在实际 class 方法中缺少 JavaDoc,但在接口方法中不会。
也试过添加这个,没用:
<property name="tokens" value="INTERFACE_DEF"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF"/>
我从中得到的类似线程(但不起作用):checkstyle JavadocType only on interfaces
有什么方法可以强制 JavadocMethod
检查接口方法?
原因:Spring Data,JPA 库,基于仅接口方法名称,其中基于 @Query
在幕后提供实现注释配置器。因此我们没有自己的实现。因此,在这种情况下,我们需要检查并要求接口方法上的 JavaDoc。
<property name="minLineCount" value="2"/>
这就是原因。如果行数为 2 或更大,则指定需要 javadoc。接口没有任何行数,所以这就是您没有收到任何违规的原因。
$ cat TestClass.java
public interface TestInterface {
void method();
}
$ cat TestConfig.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="charset" value="UTF-8"/>
<module name="TreeWalker">
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
</module>
</module>
</module>
$ java -jar checkstyle-8.18-all.jar -c TestConfig.xml TestClass.java
Starting audit...
[ERROR] TestClass.java:2:5: Missing a Javadoc comment. [JavadocMethod]
Audit done.
Checkstyle ends with 1 errors.
有谁知道为什么 CheckStyle 不在 Interface 方法上标记缺少 JavaDoc,而只在实际实现方法上标记?
假设我有以下内容,
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="minLineCount" value="2"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
这将报告在实际 class 方法中缺少 JavaDoc,但在接口方法中不会。
也试过添加这个,没用:
<property name="tokens" value="INTERFACE_DEF"/>
<property name="tokens" value="INTERFACE_DEF, CLASS_DEF"/>
我从中得到的类似线程(但不起作用):checkstyle JavadocType only on interfaces
有什么方法可以强制 JavadocMethod
检查接口方法?
原因:Spring Data,JPA 库,基于仅接口方法名称,其中基于 @Query
在幕后提供实现注释配置器。因此我们没有自己的实现。因此,在这种情况下,我们需要检查并要求接口方法上的 JavaDoc。
<property name="minLineCount" value="2"/>
这就是原因。如果行数为 2 或更大,则指定需要 javadoc。接口没有任何行数,所以这就是您没有收到任何违规的原因。
$ cat TestClass.java
public interface TestInterface {
void method();
}
$ cat TestConfig.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="charset" value="UTF-8"/>
<module name="TreeWalker">
<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
</module>
</module>
</module>
$ java -jar checkstyle-8.18-all.jar -c TestConfig.xml TestClass.java
Starting audit...
[ERROR] TestClass.java:2:5: Missing a Javadoc comment. [JavadocMethod]
Audit done.
Checkstyle ends with 1 errors.