【问题标题】:SonarQube vulnerability: Explicitly declare the visibility for variableSonarQube 漏洞:显式声明变量的可见性
【发布时间】:2019-07-23 04:55:09
【问题描述】:

众所周知,Java 中存在默认的可见性修饰符。据我了解,此修饰符可以像其他修饰符一样使用。但是为什么 SonarQube 将默认修饰符标记为漏洞 - 显式声明“var”的可见性?

【问题讨论】:

  • 这是您“质量档案”中的特殊规则。你可以设置任何你想要的规则。

标签: java variables sonarqube access-modifiers


【解决方案1】:

看看the rule的描述。

未能显式声明成员变量的可见性 可能会导致它具有您不期望的可见性,并且 可能会使其对其他类进行意外修改。

如果你有一个类包私有的属性,那么同一个包中的任何类都可以修改这个属性。

但是 Package private 仍然有有效的用途。例如,您可能希望将一个类声明为包私有,以便它可以在声明它的包中使用,但对公共使用保持隐藏。

【讨论】:

  • 我有一个包私有静态变量,包中的所有类都使用它。当我将此变量指定为受保护(对于 sonarqube)时,漏洞消失了。但是受保护的变量比包私有更容易受到攻击。或不?甚至我的 ide (Intellij IDEA) 都说要将修改器更改为包私有。
  • 视情况而定。静态变量是共享此类信息的最佳选择吗?如果您认为是,您可以将其标记为误报。
猜你喜欢
  • 2021-06-05
  • 2022-01-17
  • 1970-01-01
  • 2017-10-31
  • 2012-02-03
  • 2018-10-12
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
相关资源
最近更新 更多