[java] Fix #4393 MissingStaticMethodInNonInstantiatableClass: Fix false-positive for field-only class
This commit is contained in:

committed by
Andreas Dangel

parent
c4ee830721
commit
af7640f136
@@ -2572,12 +2572,23 @@ See the property `annotations`.
|
||||
[Annotation[pmd-java:typeIs('lombok.experimental.UtilityClass')]]
|
||||
[ClassOrInterfaceDeclaration/ClassOrInterfaceBody
|
||||
[
|
||||
(: no methods :)
|
||||
not(ClassOrInterfaceBodyDeclaration/MethodDeclaration)
|
||||
or
|
||||
(: only private methods :)
|
||||
count(ClassOrInterfaceBodyDeclaration/MethodDeclaration) = count(ClassOrInterfaceBodyDeclaration/MethodDeclaration[@Private=true()])
|
||||
]
|
||||
(
|
||||
(: no methods :)
|
||||
not(ClassOrInterfaceBodyDeclaration/MethodDeclaration)
|
||||
or
|
||||
(: only private methods :)
|
||||
count(ClassOrInterfaceBodyDeclaration/MethodDeclaration) = count(ClassOrInterfaceBodyDeclaration/MethodDeclaration[@Private=true()])
|
||||
)
|
||||
and
|
||||
(
|
||||
(: no fields :)
|
||||
not(ClassOrInterfaceBodyDeclaration/FieldDeclaration)
|
||||
or
|
||||
(: only private fields :)
|
||||
count(ClassOrInterfaceBodyDeclaration/FieldDeclaration) = count(ClassOrInterfaceBodyDeclaration/FieldDeclaration[@Private=true()])
|
||||
|
||||
)
|
||||
]
|
||||
]
|
||||
|
|
||||
//TypeDeclaration
|
||||
|
@@ -444,6 +444,45 @@ public final class Test {
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#4393 [java] MissingStaticMethodInNonInstantiatableClass should consider lombok's UtilityClass</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
@UtilityClass
|
||||
public final class Test {
|
||||
int x;
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#4393 [java] MissingStaticMethodInNonInstantiatableClass should consider lombok's UtilityClass</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
@UtilityClass
|
||||
public final class Test {
|
||||
public static final String CONSTANT = "Constant";
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#4393 [java] MissingStaticMethodInNonInstantiatableClass should consider lombok's UtilityClass</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<code><![CDATA[
|
||||
import lombok.experimental.UtilityClass;
|
||||
|
||||
@UtilityClass
|
||||
public final class Test {
|
||||
private static final String CONSTANT = "Constant";
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#4225 [java] MissingStaticMethodInNonInstantiatableClass should consider Lombok's @NoArgsConstructor</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
|
Reference in New Issue
Block a user