Skip to content

[java] ClassWithOnlyPrivateConstructorsShouldBeFinal false positive with Lombok's @NoArgsConstructor #4188

@ghost

Description

Affects PMD Version:6.51.0

Rule:ClassWithOnlyPrivateConstructorsShouldBeFinal

Please provide the rule name and a link to the rule documentation:
https://pmd.sourceforge.io/pmd-6.51.0/pmd_rules_java_design.html#classwithonlyprivateconstructorsshouldbefinal

Description:
Hi, I found a false positive about this rule, please read the following code example. PMD should not report a warning for this class because @NoArgsConstructor can add a constructor for this class. Hence, I think this is a false positive.

Code Sample demonstrating the issue:

import lombok.NoArgsConstructor;
@NoArgsConstructor
public class C {
    private C(String[] arr, long in, String res) {}
}

Expected outcome:

PMD reports a violation at line 3, 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