[java] ImmutableField: fix mockito/spring false positives

This commit is contained in:
Luke Lukes
2022-05-10 10:13:30 +03:00
parent d3880443f7
commit 402939f9cc
2 changed files with 39 additions and 0 deletions

View File

@ -4,6 +4,8 @@
package net.sourceforge.pmd.lang.java.rule.design;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@ -41,6 +43,17 @@ public class ImmutableFieldRule extends AbstractLombokAwareRule {
CHECKDECL
}
@Override
protected Collection<String> defaultSuppressionAnnotations() {
Collection<String> defaultValues = new ArrayList<>(super.defaultSuppressionAnnotations());
defaultValues.add("org.mockito.Mock");
defaultValues.add("org.mockito.InjectMocks");
defaultValues.add("org.springframework.beans.factory.annotation.Autowired");
defaultValues.add("org.springframework.boot.test.mock.mockito.MockBean");
return defaultValues;
}
@Override
public Object visit(ASTClassOrInterfaceDeclaration node, Object data) {
Object result = super.visit(node, data);

View File

@ -569,6 +569,32 @@ public class ExampleImmutableField {
this.str = strLocal+"123";
}
}
}
]]></code>
</test-code>
<test-code>
<description>#3874 [java] ImmutableField - false positive when using field setter annotations</description>
<expected-problems>0</expected-problems>
<code><![CDATA[
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.beans.factory.annotation.Autowired;
public class ExampleImmutableField {
@Mock
private Foo foo;
@InjectMocks
private Bar bar;
@MockBean
private Baz Baz;
@Autowired
private Foo2 foo2;
}
]]></code>
</test-code>