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>
我有以下代码使用 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>