【问题标题】:SonarQube Rules ConflictSonarQube 规则冲突
【发布时间】:2015-09-02 22:07:11
【问题描述】:

SonarQube 报告了这行代码的“使“ids”瞬态或可序列化”:

private final List<String> ids;

所以我把它改成了:

private final ArrayList<String> ids;

并确保我的公共接口(本例中的构造函数)仍然只使用一个接口:

public MyClass(List<String> ids) {
    this.ids = (ids == null) ? new ArrayList<>() : new ArrayList<>(ids);
}

这摆脱了第一个 SonarQube 警告,但现在它给出了:

“ids”对象的类型应该是“List”等接口,而不是实现“ArrayList”。

我不想关闭所有使用接口而不是具体类的规则,但仅适用于这样的情况。

【问题讨论】:

标签: sonarqube


【解决方案1】:

您没有说明您使用的是哪个版本的 Java 插件,但它可能是 3.4 之前的版本; that rule was relaxed 在 v3.4 中忽略私有字段。

【讨论】:

  • 好的。我刚刚从 3.0 插件更新到最新的 - 3.5。问题仍然存在。我也想知道为什么安装(我这周刚刚完成)没有附带最新的插件。总的来说,这个工具很棒,但是文档不是很有帮助而且过时了。
  • 服务器的特定版本附带了当时可用的 java 插件版本:这意味着如果您使用 LTS 版本,您最终可能会得到一个(轻微)过时的插件(但您可以通过更新中心轻松升级)。如果您发现了一些过时的文档,非常欢迎您通过 sonarqube google 群组指出过时的内容。最后:“问题仍然存在”是什么意思?您还有关于序列化的ids 字段的问题吗?
  • 好的。现在已修复。只是升级插件并重新启动 SonarQube 并不能解决问题。新的构建必须首先启动。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2011-04-17
  • 1970-01-01
  • 2015-09-08
  • 2012-06-09
  • 2011-07-27
相关资源
最近更新 更多