Skip to content

[java] ClassWithOnlyPrivateConstructorsShouldBeFinal should consider lombok's @Value #4200

@LynnBroe

Description

@LynnBroe

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:
In the following code example, @Value can add a final modifier to the class Test and causes a false positive that PMD considers it is a class with only private constructors but no final modifier.

Code Sample demonstrating the issue:

import lombok.Value;

@Value
public class Test {
    private Test(int a, int b, int c, String abc, long d, double p, String[] arr, int data, long in, float fl, String res) {}
}

Expected outcome:

PMD reports a violation at line 4, but that's wrong. That's a false positive.

Running PMD through: CLI

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