forked from phoedos/pmd
[java] CommentDefaultAccessModifierRule should consider constructors too
- Resolves #536
This commit is contained in:
@ -12,6 +12,7 @@ import net.sourceforge.pmd.lang.java.ast.ASTAnnotation;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBodyDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTConstructorDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTFieldDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration;
|
||||
import net.sourceforge.pmd.lang.java.ast.ASTMethodDeclarator;
|
||||
@ -86,6 +87,14 @@ public class CommentDefaultAccessModifierRule extends AbstractCommentRule {
|
||||
return super.visit(decl, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object visit(final ASTConstructorDeclaration decl, Object data) {
|
||||
if (shouldReport(decl)) {
|
||||
addViolationWithMessage(data, decl, String.format(MESSAGE, decl.getImage(), "constructor"));
|
||||
}
|
||||
return super.visit(decl, data);
|
||||
}
|
||||
|
||||
private boolean shouldReport(final AbstractJavaAccessNode decl) {
|
||||
List<ASTClassOrInterfaceDeclaration> parentClassOrInterface = decl
|
||||
.getParentsOfType(ASTClassOrInterfaceDeclaration.class);
|
||||
|
@ -82,9 +82,9 @@ A rule for the politically correct... we don't want to offend anyone.
|
||||
message="Missing commented default access modifier"
|
||||
externalInfoUrl="${pmd.website.baseurl}/rules/java/comments.html#CommentDefaultAccessModifier">
|
||||
<description>
|
||||
To avoid mistakes if we want that a Method, Field or Nested class have a default access modifier
|
||||
we must add a comment at the beginning of the Method, Field or Nested class.
|
||||
By default the comment must be /* default */, if you want another, you have to provide a regex.
|
||||
To avoid mistakes if we want that a Method, Constructor, Field or Nested class have a default access modifier
|
||||
we must add a comment at the beginning of it's declaration.
|
||||
By default the comment must be /* default */, if you want another, you have to provide a regexp.
|
||||
</description>
|
||||
<priority>3</priority>
|
||||
<properties>
|
||||
|
@ -155,6 +155,28 @@ public enum TestEnum {
|
||||
<code><![CDATA[
|
||||
public class CommentDefaultAccessModifier {
|
||||
@VisibleForTesting void method() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#536 Constructor with default access modifier should trigger</description>
|
||||
<expected-problems>1</expected-problems>
|
||||
<code><![CDATA[
|
||||
public class Foo {
|
||||
Foo() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
||||
<test-code>
|
||||
<description>#536 Enum constructor with implicit private modifier should not trigger</description>
|
||||
<expected-problems>0</expected-problems>
|
||||
<code><![CDATA[
|
||||
public enum Bar {
|
||||
ONE, TWO;
|
||||
|
||||
Bar() {}
|
||||
}
|
||||
]]></code>
|
||||
</test-code>
|
||||
|
Reference in New Issue
Block a user