当前位置: 首页 > 知识库问答 >
问题:

sonarQube-使现场瞬态或可串行化

严心水
2023-03-14

我试图解决sonarQube插件为Jenkins报告的以下违规行为:“使‘更新’暂时或可序列化。”。重力:临界,标记:序列化。

我有以下共享界面

public interface MPUpdate {

    void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException ;
}

以下枚举是应用程序逻辑的入口点

public enum DomainResource implements MPUpdate {

    PROGRAMMES( new ProgrammeUpdate() ),
    PRODUCTIONS( new ProductionUpdate() );
    // more enums

    private DomainResource( MPUpdate update ) {
        this.update = update;
    }

    private final MPUpdate update; // Sonar: make "update" transient or serializable, priority: critical, tag: serialization

    @Override
    public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {
        update.apply( svc, jerseyClientResp );      
    }
}

通过枚举初始化的逻辑单元之一

public class ProgrammeUpdate implements MPUpdate {

    private final ResponseConverter<ProgrammeDto> responseConverter = new ResponseConverter<>( ProgrammeDto.class );

    @Override
    public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {

        // APPLICATION LOGIC
    }

}

最后是它的使用方式:

...
String levelFromUrl = getLevel(); // eg. "programmes"
MPUpdate resource;
resource = DomainResource.valueOf( levelFromUrl.toUpperCase() ); 
...
resource.apply( soapService, jerseyClientOutcome );
...

有帮助吗?枚举的使用是否提高了日志记录的性能?

非常感谢

共有1个答案

谷彦君
2023-03-14

您不需要将其序列化。您应该将其标记为瞬态。枚举是使用简单名称字符串序列化的,因此其他字段是不相关的。只需将该场标记为瞬态,以使声纳满意(尽管该工具本身应该真正能够识别这种情况)。

 类似资料:
  • 嗨,我在声纳皮棉中收到此错误: “Serializable”类中的字段应该是暂时的或可序列化的 私有最终条件notEmpty=锁定。newCondition() 我的代码是: 有人能提供解决方案,使sonar不会显示所有三个变量的这些错误吗?

  • 问题内容: 还原此类时,我想手动初始化,否则,我只想使用默认的序列化。 我该如何在不恢复整个序列化机制的情况下,将一种方法注入对象还原过程,就像我希望做的那样? 问题答案: 实现方法: 从javadoc: 在序列化和反序列化过程中需要特殊处理的类必须实现具有以下确切签名的特殊方法: 私有void readObject(java.io.ObjectInputStream in)抛出IOExcepti

  • 我的代码: 我只是不知道我还能在这里做些什么,这个类是可序列化的,并且所有的成员字段也是可序列化的。 请让我知道,如果这已经解决之前。

  • 我使用pom文件分发我的库。这个pom文件导入其他类似的pom: 我希望这个pom也能应用于目标项目(瞬态),但它不是这样工作的。

  • 我遇到了下面的问题,请让我知道是否有人以前见过这个,真的让我疯狂地想如何前进。 我有两个实体- 当我在类B上运行SonarQube分析时,我看到S1948弹出,我只是不确定我还能在这里做什么,类A和B是可序列化的,并且确实拥有所有可序列化的成员字段。 请让我知道,如果这已经解决之前。 提前感谢!

  • 我目前正在做一个项目,我遇到了这个错误: 发生了什么:1。)我在登录后设置了一个会话范围变量,比如SessionScopeVariableA。 2.)然后我有一个页面,我在其中添加一个实体,比如EntityA。 3.)EntityA有一个惰性字段sessionScopeVariableA,所以当我调用add方法时,我必须设置这个变量。 4.)请注意,SessionScopeVariableA被包装