【问题标题】:sonarQube reporting bug - make field transient or serializablesonarQube 报告错误 - 使字段瞬态或可序列化
【发布时间】:2019-02-08 09:33:27
【问题描述】:

运行 sonarqube 分析后出现错误,但出现错误

使“getPreAHistFlt”瞬态或可序列化“

我们如何解决这个问题?

代码sn-p:

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; 
    } 
} 

【问题讨论】:

    标签: java serialization sonarqube sonarlint


    【解决方案1】:

    getPreAHistFltMsg extends Exception,是Throwable的子类; Throwable 实现了Serializable,所以Throwable 的所有子类也传递地实现了Serializable

    大概com.sanju.p2.GetPreAHistFlt 没有实现Serializable。因此,如果您尝试序列化该字段为非空的getPreAHistFltMsg,它将失败,因为无法序列化该字段的值。

    要么:

    • 将字段设为transient,从序列化中排除该字段;
    • GetPreAHistFlt 实现Serializable(但请注意有效的Java项,说明为什么在执行之前应该仔细考虑一下实现Serializable);
    • 从中提取相关(可序列化)字段。

    【讨论】:

    • GetPreAHistFlt (stub) 这个类是通过 wsdl 生成的,所以如果我们使这个可序列化,这会在另一端产生影响吗?
    【解决方案2】:

    我认为解决它的最简单方法是更改​​您的类 GetPreAHistFlt 以实现 Serializable 接口。

    【讨论】:

      【解决方案3】:

      这可以通过将 GetPreAHistFlt 类设为可序列化来完成。

      【讨论】:

        猜你喜欢
        • 2016-07-01
        • 2020-02-18
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 2018-09-12
        • 1970-01-01
        • 2016-12-12
        相关资源
        最近更新 更多