Merge branch 'master' into pr/3961

This commit is contained in:
Andreas Dangel
2022-05-26 10:31:04 +02:00
19 changed files with 464 additions and 120 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

@ -572,4 +572,35 @@ public class ExampleImmutableField {
}
]]></code>
</test-code>
<test-code>
<description>#3874 [java] ImmutableField reports fields annotated with @Autowired (Spring) and @Mock (Mockito)</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;
}
class Foo {}
class Bar {}
class Baz {}
class Foo2 {}
]]></code>
</test-code>
</test-data>