首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ConstantName签入check样式时将java接口常量视为非公共的?

为什么ConstantName签入check样式时将java接口常量视为非公共的?
EN

Stack Overflow用户
提问于 2020-07-28 06:49:32
回答 1查看 100关注 0票数 4

在我们的项目中,我们希望确保私有常量总是以_ (下划线)开头,而rest都不以下划线开头。checkstyle check ConstantName未能将接口常量视为公共的,并应用私有修饰符的规则。

我们在gradle项目中使用校验风格8.35来分析java代码(OpenJdk 11,Gradle 6.4)。下面是常量接口的代码片段。

代码语言:javascript
复制
public interface MyInterface() {
   int MAX_SIZE = 1024;
  
   //Some methods here
}

ConstantName检查的检查样式配置如下所示

代码语言:javascript
复制
<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]+)*$'.,而我们的期望是,无错误,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-28 06:59:43

从快速扫描源代码判断,这是一个错误。只有当关键字public存在时,他们才会认为常量是公共的(这在类中是这样的,而不是接口)。

我建议把这件事作为https://github.com/checkstyle/checkstyle/issues的一个问题来报道

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63128481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档