sonarQube 报告错误 - 使字段瞬态或可序列化
sonarQube reporting bug - make field transient or serializable
我在 运行 sonarqube 分析后遇到错误
Make "getPreAHistFlt" transient or serializable "
我们如何解决这个问题?
代码片段:
package com.sanju.p1;
//webfault and namespace
@WebFault(name = "getPreAHistFlt", targetNamespace = "http://www.getPreAuthorizationHistory")
public class getPreAHistFltMsg extends Exception {
private com.sanju.p2.GetPreAHistFlt getPreAHistFlt; // showing bug here
//constructors
public getPreAHistFltMsg() {
super();
}
public getPreAHistFltMsg(String message) {
super(message);
}
public getPreAHistFltMsg(String message, Throwable cause) {
super(message, cause);
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt) {
super(message);
this.getPreAHistFlt = getPreAHistFlt;
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt, Throwable cause) {
super(message, cause);
this.getPreAHistFlt = getPreAHistFlt;
}
public com.sanju.p2.GetPreAHistFlt getFaultInfo() {
return this.getPreAHistFlt;
}
}
getPreAHistFltMsg extends Exception
,是Throwable
的子类; Throwable
实现了 Serializable
,因此 Throwable
的所有子类也传递地实现了 Serializable
。
据推测,com.sanju.p2.GetPreAHistFlt
没有实现 Serializable
。因此,如果您尝试序列化该字段为非空的 getPreAHistFltMsg
,它将失败,因为该字段的值无法序列化。
或者:
- 将该字段从序列化中排除,使其成为
transient
;
- 使
GetPreAHistFlt
实施 Serializable
(但请注意 有效 Java 项关于实施 Serializable
的原因在做之前你应该仔细考虑);
- 从中提取相关的(可序列化的)字段。
我认为解决它的最简单方法是更改 class GetPreAHistFlt 以实现 Serializable 接口。
这可以通过使 class GetPreAHistFlt 可序列化来完成。
我在 运行 sonarqube 分析后遇到错误
Make "getPreAHistFlt" transient or serializable "
我们如何解决这个问题?
代码片段:
package com.sanju.p1;
//webfault and namespace
@WebFault(name = "getPreAHistFlt", targetNamespace = "http://www.getPreAuthorizationHistory")
public class getPreAHistFltMsg extends Exception {
private com.sanju.p2.GetPreAHistFlt getPreAHistFlt; // showing bug here
//constructors
public getPreAHistFltMsg() {
super();
}
public getPreAHistFltMsg(String message) {
super(message);
}
public getPreAHistFltMsg(String message, Throwable cause) {
super(message, cause);
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt) {
super(message);
this.getPreAHistFlt = getPreAHistFlt;
}
public getPreAHistFltMsg(String message, com.sanju.p2.GetPreAHistFlt getPreAHistFlt, Throwable cause) {
super(message, cause);
this.getPreAHistFlt = getPreAHistFlt;
}
public com.sanju.p2.GetPreAHistFlt getFaultInfo() {
return this.getPreAHistFlt;
}
}
getPreAHistFltMsg extends Exception
,是Throwable
的子类; Throwable
实现了 Serializable
,因此 Throwable
的所有子类也传递地实现了 Serializable
。
据推测,com.sanju.p2.GetPreAHistFlt
没有实现 Serializable
。因此,如果您尝试序列化该字段为非空的 getPreAHistFltMsg
,它将失败,因为该字段的值无法序列化。
或者:
- 将该字段从序列化中排除,使其成为
transient
; - 使
GetPreAHistFlt
实施Serializable
(但请注意 有效 Java 项关于实施Serializable
的原因在做之前你应该仔细考虑); - 从中提取相关的(可序列化的)字段。
我认为解决它的最简单方法是更改 class GetPreAHistFlt 以实现 Serializable 接口。
这可以通过使 class GetPreAHistFlt 可序列化来完成。