Правило Checkstyle ConstantName срабатывает для вещей, которые на самом деле не постоянны - PullRequest
0 голосов
/ 03 августа 2020

Я хотел бы проверить, что имена моих полей указаны в верхнем регистре только для полей, которые соответствуют моему предпочтительному определению «константы», как указано в Google Java Рекомендации по кодированию .

Таким образом :

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

Можно ли указать правило, которое требует именования в верхнем регистре, только если тип является примитивным типом или последней ссылкой на String или другой неизменяемый класс?

1 Ответ

1 голос
/ 03 августа 2020

Не совсем. 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>
...