Checkstyle ConstantName 规则适用于并非真正常量的事物
Checkstyle ConstantName rule kicks in for things that are not really constant
我想检查我的字段名称是否仅对符合我首选的“常量”定义的字段使用大写字母,如 Google's Java Coding Guidelines 中所述。
因此:
private static final integer NUM = 1974; // is a constant
private static final String NAME = "Freddie" // is a constant
private static final Map<String, String> myMap = new HashMap<>(); // is NOT a constant
private static final Logger myLogger = LogManager.getLogger(); // is NOT a constant
是否可以指定一个规则,仅当类型是原始类型或对字符串或其他 不可变 class 的最终引用时才需要大写命名?
不是真的。 Checkstyle 必须执行代码。例如,private static final Map<String, String> myMap = Map.of("One", "Blue", "Two", "Red");
是一个不可变值。
您可以做的一件事是告诉 Checkstyle 它不应该对私有字段强制执行命名方案:
<module name="ConstantName">
<property name="applyToPrivate" value="false"/>
</module>
另一个选项是指定允许的名称:
<module name="ConstantName">
<property name="format"
value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|myMap|myLogger)$"/>
</module>
我想检查我的字段名称是否仅对符合我首选的“常量”定义的字段使用大写字母,如 Google's Java Coding Guidelines 中所述。
因此:
private static final integer NUM = 1974; // is a constant
private static final String NAME = "Freddie" // is a constant
private static final Map<String, String> myMap = new HashMap<>(); // is NOT a constant
private static final Logger myLogger = LogManager.getLogger(); // is NOT a constant
是否可以指定一个规则,仅当类型是原始类型或对字符串或其他 不可变 class 的最终引用时才需要大写命名?
不是真的。 Checkstyle 必须执行代码。例如,private static final Map<String, String> myMap = Map.of("One", "Blue", "Two", "Red");
是一个不可变值。
您可以做的一件事是告诉 Checkstyle 它不应该对私有字段强制执行命名方案:
<module name="ConstantName">
<property name="applyToPrivate" value="false"/>
</module>
另一个选项是指定允许的名称:
<module name="ConstantName">
<property name="format"
value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|myMap|myLogger)$"/>
</module>