我们希望在我们的项目中强制执行枚举类型的命名约定,以 E 字母开头(因此枚举应该命名为 egEType
等EColor
)。
我看到了为接口和类类型强制命名约定的方法(在TypeName 规则中使用“类声明”和“接口声明”标记)。
有没有办法为枚举做到这一点?
我们希望在我们的项目中强制执行枚举类型的命名约定,以 E 字母开头(因此枚举应该命名为 egEType
等EColor
)。
我看到了为接口和类类型强制命名约定的方法(在TypeName 规则中使用“类声明”和“接口声明”标记)。
有没有办法为枚举做到这一点?
我认为使用 checkstyle 没有简单的方法可以做到这一点,所以你需要编写自己的支票来做到这一点。
命名约定集中没有相应的规则。但是您可以使用RegExp检查(正则表达式的解释)来获得所需的结果:
<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中的关键字,因此应该不会有很多误报。
据我所知没有。但是您可以定义自己的规则。见http://checkstyle.sourceforge.net/writingchecks.html
现在可以使用 OP 提到的TypeName 规则ENUM_DEF
,使用令牌。
这样的事情应该有效(基于规则的示例,未经测试):
<module name="TypeName">
<property name="format" value="^E[A-Z][a-zA-Z0-9]+$"/>
<property name="tokens" value="ENUM_DEF"/>
</module>