lombok checkstyle VisibilityModifier 错误

lombok checkstyle VisibilityModifier error

我有以下代码使用 lombok @Value 生成不可变的 class:

@Value
public class InputDTO {
    String field;
}

但不幸的是它不同意 checkstyle 可见性修饰符检查,它抱怨这个错误:

Variable 'field' must be private and have accessor methods. (18:10) [VisibilityModifier]

我找到了一个解决方法来抑制这样的检查:

@SuppressWarnings("checkstyle:VisibilityModifier")

但是有没有办法让 checkstyle 验证 lombok 的生成代码而不是普通的原始代码?

没有办法。 Lombok 的魔法应用于 compile phase,但 checkstyle 仅分析文件中的代码作为文本,而不是字节码。

有一种方法可以在 checkstyle.xml 配置中禁用此违规一次,而不是在每个文件中使用 @SuppressWarnings 并污染您的生产代码。

使用 SuppressionXpathSingleFilter 你可以:

<module name="TreeWalker">
    <module name="SuppressionXpathSingleFilter">
        <property name="checks" value="VisibilityModifier"/>
        <property name="query" value="//*[MODIFIERS//*[@text = 'Value']]/descendant-or-self::node()"/>
    </module>
</module>