我们希望在我们的项目中强制实施枚举类型的命名约定,以E字母开头(因此枚举应该命名为例如EType
,EColor
等)。有没有办法强制使用Checkstyle枚举类型命名约定?
我看到了为接口和类类型实施命名约定的方法(使用TypeName rule中的“类声明”和“接口声明”令牌)。
有没有办法做到这一点的枚举?
我们希望在我们的项目中强制实施枚举类型的命名约定,以E字母开头(因此枚举应该命名为例如EType
,EColor
等)。有没有办法强制使用Checkstyle枚举类型命名约定?
我看到了为接口和类类型实施命名约定的方法(使用TypeName rule中的“类声明”和“接口声明”令牌)。
有没有办法做到这一点的枚举?
据我所知没有。但是你可以定义你自己的规则。请参阅http://checkstyle.sourceforge.net/writingchecks.html
我认为没有简单的方法可以用checkstyle来做到这一点,所以您需要编写自己的支票来执行此操作。
有中设置的命名约定没有相应的规则。
<module name="Regexp">
<property name="format" value="\benum\s+\S\S(?<!E[A-Z])[a-zA-Z0-9]+"/>
<property name="message"
value="Enums must start with a capital 'E', e.g. EMyEnum"/>
<property name="illegalPattern" value="true"/>
<property name="ignoreComments" value="true"/>
</module>
这忽略了比赛的评论(当枚举声明被注释掉等),并且如果存在之间的换行符作品:但是你可以使用RegExp检查(正则表达式的explanation)达到预期效果enum
关键字和标识符。由于enum
是Java中的关键字,因此不应该有太多的误报。
现在可以用OP提到的TypeName rule使用ENUM_DEF
令牌。
像这样的东西应该工作(根据规则的例子,没有测试):
<module name="TypeName">
<property name="format" value="^E[A-Z][a-zA-Z0-9]+$"/>
<property name="tokens" value="ENUM_DEF"/>
</module>
很有前途,我会检查出来。 –
好的!让我知道它是否有效。 –