【问题标题】:SonarQube - Rule Fields in a "Serializable" class should either be transient or serializableSonarQube - “可序列化”类中的规则字段应该是瞬态的或可序列化的
【发布时间】:2015-09-21 11:00:41
【问题描述】:

这可能看起来像重复的问题,但我已经发布了声纳规则合规建议的代码示例。使用 SonarQube 评估以下突出显示的代码时,会导致 squid:S1948 违反规则。

结果,

为什么它显示违反合规代码仍然是一个谜,请澄清。

更新

即使使用sonar.java.binaries 也无法解决瞬态或可序列化问题

声纳扫描成功但抛出类加载器警告:

08:26:44.984 INFO - Java bytecode scan... 08:26:44.992 WARN - Class 'dummyserial/Address' is not accessible through the C lassLoader. 08:26:44.993 WARN - Class 'dummyserial/Person' is not accessible through the Cl assLoader. 08:26:44.993 WARN - Class 'dummyserial/Address' is not accessible through the C lassLoader. 08:26:44.994 WARN - Class 'dummyserial/Person' is not accessible through the Cl assLoader. 08:26:44.994 WARN - Class 'dummyserial/Address' is not accessible through the C lassLoader. 08:26:44.997 WARN - Class 'dummyserial/Person' is not accessible through the Cl assLoader. 08:26:44.998 INFO - Java bytecode scan done: 14 ms

【问题讨论】:

  • 地址类是什么样的?
  • 你是如何定义地址类的?您是否为分析提供了字节码? (您的分析是使用 maven 还是 sonar runner 运行的?如果是后者,您是否使用 sonar.java.binaries 提供了 .class 文件?)
  • @benzonico,我将 Person 和 Address 作为单独的 java 文件,使用 sonar.sources=src 通过声纳运行器进行扫描。
  • @benzonico,sonar.java.binaries 不走运

标签: java serialization sonarqube


【解决方案1】:

如前所述,您应该填写sonar.java.binaries 属性,以便进行字节码分析和符号解析。填充此属性后,分析不会对该案例提出任何问题。

现在,当我们无法解析字段的符号类型时,我们提出一个问题确实很烦人。我创建了以下票证来处理该问题:SONARJAVA-1266

【讨论】:

  • 现在将尝试您的建议并更新我的状态,希望 Sonar 团队将在即将发布的版本中解决此问题,谢谢/
  • 已尝试使用 sonar.java.binaries 但仍然没有成功,请在更新标题下更新相关详细信息
猜你喜欢
  • 2018-09-12
  • 2016-12-12
  • 2016-07-01
  • 2020-02-02
  • 1970-01-01
  • 2020-03-15
  • 2012-07-05
  • 2019-02-08
相关资源
最近更新 更多