Skip to content

[java] ImmutableField reports fields annotated with @Captor (Mockito) #3998

@zman0900

Description

@zman0900

Affects PMD Version:
6.46.0

Rule:
ImmutableField
https://pmd.github.io/pmd-6.46.0/pmd_rules_java_design.html#immutablefield

Description:
#3874 is not completely fixed with PMD 6.46.0. For example, fields annotated with Mockito's @Captor. Likely also effects other Mockito annotations such as @Spy.

Code Sample demonstrating the issue:

@ExtendWith(MockitoExtension.class)
class SomeTest {
    @Captor
    private ArgumentCaptor<String> argCaptor;
    @Mock
    private List<String> mockList;

    @Test
    void testCap() {
        mockList.add("junk");
        verify(mockList).add(argCaptor.capture());
        assertEquals("junk", argCaptor.getValue());
    }
}

Expected outcome:

PMD reports a violation for argCaptor, but that's wrong. That's a false positive.

Running PMD through:
Maven

Metadata

Metadata

Assignees

No one assigned

    Labels

    a:false-positivePMD flags a piece of code that is not problematic

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions