Skip to content

[java] UseCollectionIsEmpty can not detect the case foo.bar().size() #2542

@wuchiuwong

Description

@wuchiuwong

Affects PMD Version:
6.22.0
Rule:
UseCollectionIsEmpty

Description:
UseCollectionIsEmpty can not detect the case foo.bar().size().
AST analyse result of the code sample:

<PrimaryPrefix FindBoundary='false' Image='' SingleLine='true' SuperModifier='false' ThisModifier='false'>
	<Name FindBoundary='false' Image='vr.getMembers' SingleLine='true' />
</PrimaryPrefix>
<PrimarySuffix ArgumentCount='0' Arguments='true' ArrayDereference='false' FindBoundary='false' Image='' SingleLine='true'>
    <Arguments ArgumentCount='0' FindBoundary='false' Image='' SingleLine='true' Size='0' />
</PrimarySuffix>
    <PrimarySuffix ArgumentCount='-1' Arguments='false' ArrayDereference='false' FindBoundary='false' Image='size' SingleLine='true' />
<PrimarySuffix ArgumentCount='0' Arguments='true' ArrayDereference='false' FindBoundary='false' Image='' SingleLine='true'>
    <Arguments ArgumentCount='0' FindBoundary='false' Image='' SingleLine='true' Size='0' />
</PrimarySuffix>

In the case vr.getMembers().size(), PrimaryPrefix is vr.getMembers, may cause error in comparing whether PrimaryPrefix is collection

Code Sample demonstrating the issue:

while (vr.getMembers().size() > 0)

Expected outcome:
false-negative

Running PMD through:
CLI

Metadata

Metadata

Assignees

No one assigned

    Labels

    a:false-negativePMD doesn't flag a problematic piece of code

    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