diff --git a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/BeanMembersShouldSerializeRule.java b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/BeanMembersShouldSerializeRule.java index 9b16bf3c5c..910101c31a 100644 --- a/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/BeanMembersShouldSerializeRule.java +++ b/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/errorprone/BeanMembersShouldSerializeRule.java @@ -8,6 +8,7 @@ import static net.sourceforge.pmd.properties.PropertyFactory.stringProperty; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.Map; @@ -35,11 +36,19 @@ public class BeanMembersShouldSerializeRule extends AbstractLombokAwareRule { private static final PropertyDescriptor PREFIX_DESCRIPTOR = stringProperty("prefix").desc("A variable prefix to skip, i.e., m_").defaultValue("").build(); - public BeanMembersShouldSerializeRule() { definePropertyDescriptor(PREFIX_DESCRIPTOR); } + @Override + protected Collection defaultSuppressionAnnotations() { + return Arrays.asList( + "lombok.Data", + "lombok.Getter", + "lombok.Value" + ); + } + @Override public Object visit(ASTCompilationUnit node, Object data) { prefixProperty = getProperty(PREFIX_DESCRIPTOR); @@ -63,7 +72,9 @@ public class BeanMembersShouldSerializeRule extends AbstractLombokAwareRule { return data; } - boolean classHasLombok = hasLombokAnnotation(node); + if (hasLombokAnnotation(node)) { + return super.visit(node, data); + } Map> methods = node.getScope().getEnclosingScope(ClassScope.class) .getMethodDeclarations(); @@ -85,7 +96,7 @@ public class BeanMembersShouldSerializeRule extends AbstractLombokAwareRule { VariableNameDeclaration decl = entry.getKey(); AccessNode accessNodeParent = decl.getAccessNodeParent(); if (entry.getValue().isEmpty() || accessNodeParent.isTransient() || accessNodeParent.isStatic() - || classHasLombok || hasIgnoredAnnotation((Annotatable) accessNodeParent)) { + || hasIgnoredAnnotation((Annotatable) accessNodeParent)) { continue; } String varName = StringUtils.capitalize(trimIfPrefix(decl.getImage()));