我們希望在我們的項目中強制實施枚舉類型的命名約定,以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>
很有前途,我會檢查出來。 –
好的!讓我知道它是否有效。 –