【问题标题】:How can I enforce that enum constants must be uppercase in Checkstyle?如何强制在 Checkstyle 中枚举常量必须为大写?
【发布时间】:2017-10-24 11:36:47
【问题描述】:

假设我有以下枚举:

enum Colour
{
    RED   (1),
    GREEN (2),
    Blue  (3); // Invalid

    final int colourCode;

    Colour(final int code)
    {
        this.colourCode = code;
    }
}

我希望 Checkstyle 强制所有枚举常量只能包含大写字符、数字和下划线。

在这种情况下,Blue 应该抛出一个错误,而其他一切(包括成员 colourCode)都可以。

我查看了来自the naming section of the documentationMemberNameConstantNameStaticVariableName,但似乎没有一个适用,您也无法将它们专门针对枚举。

【问题讨论】:

  • 使用像/[A-Z]+/这样的正则表达式
  • ConstantName 不也适用于枚举吗?至少,这会让我感到惊讶。
  • @laune 它没有,它也让我感到惊讶。我的 ConstantName 规则在静态最终字段上正常工作。

标签: java enums checkstyle


【解决方案1】:

令人惊讶的是,Core Checkstyle 无法做到开箱即用。您必须使用Sevntu Checkstyle 插件,它具有EnumValueNameCheck。我认为默认行为正是您所需要的,因此您可以这样配置它:

<module name="EnumValueName"/>

确保在运行之前将 Sevntu Checkstyle 添加到您的 Checkstyle 类路径中。他们的网站有关于如何在各种情况下执行此操作的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多