使"class"瞬态或可序列化但该类是可序列化的

geo*_*bel 6 java serialization sonarqube

在查看我的代码后,SonarQube 5.1标记了许多关键问题.但是,类本身和字段中引用的类也是可序列化的.引用的类通过类继承可序列化的接口.

这是我的例子

public class A implements Serializable {
     private B b;  // -> Sonarcube markes this field as not serialzable
}
Run Code Online (Sandbox Code Playgroud)

B类定义如下

public class B extends C {
 ....
}
Run Code Online (Sandbox Code Playgroud)

C类定义如下

public abstract class C extends D {
 ....
}
Run Code Online (Sandbox Code Playgroud)

并且定义了D类

public abstract class D implements Serializable {
  ....
}
Run Code Online (Sandbox Code Playgroud)

在同一个项目上运行FindBugs不会发现这些问题.我不确定它是否是sonarcube中的错误,或者我的代码是否有其他问题(C,D或其他类中的其他字段)

有人有线索吗?

Mus*_*afa 4

这可能是因为二进制文件未正确提供。我的 SonarQube 配置也有类似的问题,然后我发现实现的类Serializable位于不同的模块和/或外部库中。

设置正确的值sonar.java.binariessonar.java.libraries允许 SonarQube 定位二进制文​​件并正确确定类是否可序列化。