使 checkstyle 需要变量前缀
Make checkstyle require variable prefix
我希望所有复选框变量都以 "ckx" 开头。
^.*JCheckBox((?! ckx).)*$
这适用于变量声明,但也匹配定义。
例如。
ckxSomeCheckbox = new JCheckBox();
知道如何防止此代码显示为错误吗?
有效示例:
private JCheckBox ckxTest = new JCheckBox();
public javax.swing.JCheckBox ckxTest;
无效示例:
private JCheckBox abcTest;
private JCheckBox abcckxTest;
ckxTest = new JCheckBox();
ckxTest = new JCheckBox("");
我建议使用 RegexpMultiline 检查,这样你就可以发现人们在不方便的地方插入换行符的情况。
正则表达式为 \bJCheckBox\b\s*(?!ckx[A-Z])\w+
(explanation / examples).
<module name="RegexpMultiline">
<property name="format" value="\bJCheckBox\b\s*(?!ckx[A-Z])\w+"/>
<property name="message" value="Missing prefix 'ckx' on checkbox variable"/>
<property name="fileExtensions" value="java"/>
</module>
请注意,我删除了错误标识符位于行首的行,因为这些行无法编译。除非您之前声明了变量,否则这就是标记问题的地方。
ckxTest = new JCheckBox();
ckxTest = new JCheckBox("");
用正则表达式检查这个并不完美,因为人们可以使用注释或子类来混淆检测器。因此,使用 PMD XPath rule 或其他东西将是一种更强大的方法,但这是另一个问题。 :-)
同样可以使用 RegexpSinglelineJava 实现,它增加了忽略评论的能力,但会因意外的换行而出轨:
<module name="RegexpSinglelineJava">
<property name="format" value="\bJCheckBox\b\s*(?!ckx[A-Z])\w+"/>
<property name="message" value="Missing prefix 'ckx' on checkbox variable"/>
<property name="ignoreComments" value="true"/>
</module>
我希望所有复选框变量都以 "ckx" 开头。
^.*JCheckBox((?! ckx).)*$
这适用于变量声明,但也匹配定义。 例如。
ckxSomeCheckbox = new JCheckBox();
知道如何防止此代码显示为错误吗?
有效示例:
private JCheckBox ckxTest = new JCheckBox();
public javax.swing.JCheckBox ckxTest;
无效示例:
private JCheckBox abcTest;
private JCheckBox abcckxTest;
ckxTest = new JCheckBox();
ckxTest = new JCheckBox("");
我建议使用 RegexpMultiline 检查,这样你就可以发现人们在不方便的地方插入换行符的情况。
正则表达式为 \bJCheckBox\b\s*(?!ckx[A-Z])\w+
(explanation / examples).
<module name="RegexpMultiline">
<property name="format" value="\bJCheckBox\b\s*(?!ckx[A-Z])\w+"/>
<property name="message" value="Missing prefix 'ckx' on checkbox variable"/>
<property name="fileExtensions" value="java"/>
</module>
请注意,我删除了错误标识符位于行首的行,因为这些行无法编译。除非您之前声明了变量,否则这就是标记问题的地方。
ckxTest = new JCheckBox();
ckxTest = new JCheckBox("");
用正则表达式检查这个并不完美,因为人们可以使用注释或子类来混淆检测器。因此,使用 PMD XPath rule 或其他东西将是一种更强大的方法,但这是另一个问题。 :-)
同样可以使用 RegexpSinglelineJava 实现,它增加了忽略评论的能力,但会因意外的换行而出轨:
<module name="RegexpSinglelineJava">
<property name="format" value="\bJCheckBox\b\s*(?!ckx[A-Z])\w+"/>
<property name="message" value="Missing prefix 'ckx' on checkbox variable"/>
<property name="ignoreComments" value="true"/>
</module>