Skip to content

Commit

Permalink
Merge branch 'issue-536' of https://github.com/Monits/pmd into pr-539
Browse files Browse the repository at this point in the history
  • Loading branch information
adangel committed Aug 12, 2017
2 parents 69fc7c8 + 0b2389c commit 86f5fa9
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
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;
Expand Down Expand Up @@ -86,6 +87,14 @@ public Object visit(final ASTClassOrInterfaceDeclaration decl, final Object data
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);
Expand Down
6 changes: 3 additions & 3 deletions pmd-java/src/main/resources/rulesets/java/comments.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
2 changes: 2 additions & 0 deletions src/site/markdown/overview/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ and include them to such reports.
* [#487](https://github.com/pmd/pmd/pull/487): \[java] Fix typeresolution for anonymous extending object
* [#496](https://github.com/pmd/pmd/issues/496): \[java] processing error on generics inherited from enclosing class
* [#527](https://github.com/pmd/pmd/issues/527): \[java] Lombok getter annotation on enum is not recognized correctly
* java-comments
* [#536](https://github.com/pmd/pmd/issues/536): \[java] CommentDefaultAccessModifierRule ignores constructors
* java-controversial
* [#408](https://github.com/pmd/pmd/issues/408): \[java] DFA not analyzing asserts
* java-sunsecure
Expand Down

0 comments on commit 86f5fa9

Please sign in to comment.