首页 > 解决方案 > Lombok 注释给出恶意代码错误 - 可能通过返回对可变对象的引用来暴露内部表示错误

问题描述

我有以下课程。

// Adding Lombok's @Data / @Value gives an error
public class Sample {

    String id;

    String name;

    Dummy[] entries;

    @JsonCreator
    // @Builder --> This gives same error
    private Sample(
            @JsonProperty("id") final String id,
            @JsonProperty("name") final String name,
            @JsonProperty("entries") @NonNull final Dummy[] entries) {
        this.id = id;
        this.name = name;
        this.entries = entries;
    }
}

如果我添加 Lomobok 注释,我会收到以下错误。我们严重依赖 Lombok,我正在尝试弄清楚如何确保不返回可变对象。

EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object

EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object

作为替代方案,我可以使用 List 而不是 Array 并依赖 @Singular 注释。但我想知道是否有带有 Lombok 注释的 Array 的解决方法。

标签: javalombok

解决方案


解决此问题的一种方法是添加一些 lombok 配置。执行此操作的方法是在项目的根目录(与您的 pom.xml/build.gradle 相同的位置)添加一个名为:

lombok.config.

在此文件中添加以下行:

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true
lombok.extern.findbugs.addSuppressFBWarnings = true
lombok.anyConstructor.addConstructorProperties = true

更多信息: https ://projectlombok.org/features/configuration


推荐阅读