我们希望在项目中强制枚举类型的命名约定以E字母开头(因此枚举应该命名为EType
,EColor
等)。
我看到了为接口和类类型强制执行命名约定的方法(使用TypeName rule中的“类声明”和“接口声明”标记。)
有没有办法为枚举做这个?
答案 0 :(得分:1)
我认为使用checkstyle没有简单的方法可以执行此操作,因此您需要编写自己的检查来执行此操作。
答案 1 :(得分:1)
命名约定集中没有相应的规则。但是你可以使用RegExp检查(正则表达式的explanation)来获得所需的结果:
<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>
这会忽略注释中的匹配(例如,当枚举声明被注释掉时),并且如果enum
关键字和标识符之间存在换行符,则也会起作用。由于enum
是Java中的关键字,因此不应该有很多误报。
答案 2 :(得分:0)
据我所知,没有。但您可以定义自己的规则。见http://checkstyle.sourceforge.net/writingchecks.html
答案 3 :(得分:0)
OP现在可以使用ENUM_DEF
令牌提及TypeName rule。
这样的事情应该有效(基于规则&#39的例子,未经测试):
<module name="TypeName">
<property name="format" value="^E[A-Z][a-zA-Z0-9]+$"/>
<property name="tokens" value="ENUM_DEF"/>
</module>