我想创建一个checkstyle规则,在除了函数参数和每个循环之外的单独行上强制执行注释。有没有办法创建这样的规则,以便以下代码有效:
@Deprecated
public class Annotation
{
@Deprecated
public void test(@Nullable String s) {
@Rule
Integer i;
for (@Nullable Char c : s.getChars()) {
}
}
}
答案 0 :(得分:1)
您可以使用AnnotationLocation检查,但看起来现在无法创建此类规则,因为Integer i
和Char c
都是VARIABLE_DEF,因此您可以强制执行所有变量定义以使其具有单独注释:
<module name="AnnotationLocation">
<property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
</module>
或允许他们在同一条线上:
<module name="AnnotationLocation">
<property name="allowSamelineSingleParameterlessAnnotation" value="false"/>
<property name="tokens" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
但是,对于AnnotationLocation检查的新选项是个好主意。请为此创建一个问题:issue tracking,How to request new feature for existing functionality?。