例:
public enum TestEnum {
FOO(4), BAR(7);
public final int externalValue;
private TestEnum(int externalValue) {
this.externalValue = externalValue;
}
}
请注意,没有getExternalValue()方法。由于externalValue字段是最终字段,因此没有被修改的风险。通过Sonar运行这样的代码给我一个“变量'externalValue'必须是私有的并且具有访问器方法”错误。
假设我是一个白痴,并解释:为什么我绝对需要实现并使用用于externalValue的访问器?
很难解释为什么,但是Java Bean模式从一个聪明的构造发展成为通用规则的方式在某种程度上让我感到不安。我只是觉得不必总是有此必要。
最佳答案
在这种情况下,Sonar规则完全是错误的。枚举甚至不可能符合JavaBean规范(因为它需要公共构造函数)
静态代码分析器总是会发生这种情况。您可以使用// NOSONAR
注释或@SuppressWarnings
注释有选择地禁用某些警告。