在我们的项目中,我们希望确保私有常量总是以_ (下划线)开头,而rest都不以下划线开头。checkstyle check ConstantName未能将接口常量视为公共的,并应用私有修饰符的规则。
我们在gradle项目中使用校验风格8.35来分析java代码(OpenJdk 11,Gradle 6.4)。下面是常量接口的代码片段。
public interface MyInterface() {
int MAX_SIZE = 1024;
//Some methods here
}ConstantName检查的检查样式配置如下所示
<module name="ConstantName">
<property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
<property name="applyToPrivate" value="false"/>
</module>
<module name="ConstantName">
<property name="format" value="^_[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
<property name="applyToPublic" value="false"/>
<property name="applyToProtected" value="false"/>
<property name="applyToPackage" value="false"/>
</module>运行校验样式分析后,MAX_SIZE的错误报告为Name 'MAX_SIZE' must match pattern '^_[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.,而我们的期望是,无错误,。
发布于 2020-07-28 06:59:43
从快速扫描源代码判断,这是一个错误。只有当关键字public存在时,他们才会认为常量是公共的(这在类中是这样的,而不是接口)。
我建议把这件事作为https://github.com/checkstyle/checkstyle/issues的一个问题来报道
https://stackoverflow.com/questions/63128481
复制相似问题