[java] ClassWithOnlyPrivateConstructorsShouldBeFinal - exclude abstract
classes
This commit is contained in:
2 files changed
+14
-1
No files matched your search
+2
-1
@@ -9,6 +9,7 @@ import static net.sourceforge.pmd.lang.java.ast.AccessNode.Visibility.V_PRIVATE;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTAnyTypeDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.JModifier;
|
||||
import net.sourceforge.pmd.lang.java.rule.AbstractJavaRulechainRule;
|
||||
import net.sourceforge.pmd.lang.java.types.TypeTestUtil;
|
||||
|
||||
@@ -21,7 +22,7 @@ public class ClassWithOnlyPrivateConstructorsShouldBeFinalRule extends AbstractJ
|
||||
@Override
|
||||
public Object visit(ASTClassOrInterfaceDeclaration node, Object data) {
|
||||
if (node.isRegularClass()
|
||||
&& !node.isFinal()
|
||||
&& !node.getModifiers().hasAny(JModifier.FINAL, JModifier.ABSTRACT)
|
||||
&& hasOnlyPrivateCtors(node)
|
||||
&& hasNoSubclasses(node)) {
|
||||
addViolation(data, node);
|
||||
|
||||
+12
@@ -159,4 +159,16 @@ class ClassWithOnlyPrivateConstructorsShouldBeFinal {
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>Private abstract classes should be ignored</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
public class Outer {
|
||||
private abstract class Base {
|
||||
abstract void run();
|
||||
}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
</test-data>
|
||||
Reference in new issue
Block a user