- * Property {@code scope} - Specify the visibility scope where Javadoc comments are checked.
- * Type is {@code com.puppycrawl.tools.checkstyle.api.Scope}.
- * Default value is {@code private}.
- *
- *
- * Property {@code excludeScope} - Specify the visibility scope where Javadoc
- * comments are not checked.
- * Type is {@code com.puppycrawl.tools.checkstyle.api.Scope}.
- * Default value is {@code null}.
+ * Property {@code accessModifiers} - Specify the access modifiers where Javadoc comments are
+ * checked.
+ * Type is {@code com.puppycrawl.tools.checkstyle.checks.naming.AccessModifierOption[]}.
+ * Default value is {@code public, protected, package, private}.
*
*
* Property {@code ignoreNamePattern} - Specify the regexp to define variable names to ignore.
@@ -67,8 +64,8 @@
* <module name="JavadocVariable"/>
*
*
- * By default, this setting will report a violation if
- * there is no javadoc for any scope member.
+ * By default, this setting will report a violation
+ * if there is no javadoc for a member with any access modifier.
*
*
* public class Test {
@@ -84,40 +81,16 @@
* }
*
*
- * To configure the check for {@code public} scope:
- *
This setting will report a violation if there is no javadoc for {@code public} member.
- *
- * public class Test {
- * private int a; // OK
- *
- * /**
- * * Some description here
- * */
- * private int b; // OK
- * protected int c; // OK
- * public int d; // violation, missing javadoc for public member
- * /*package*/ int e; // OK
- * }
- *
- *
- * To configure the check for members which are in {@code private},
- * but not in {@code protected} scope:
+ * To configure the check for {@code package} and {@code private} variables:
*
- * This setting will report a violation if there is no javadoc for {@code private}
- * member and ignores {@code protected} member.
+ * This setting will report a violation if there is no javadoc for {@code package}
+ * or {@code private} members.
*
*
* public class Test {
@@ -141,8 +114,8 @@
* </module>
*
*
- * This setting will report a violation if there is no javadoc for any scope
- * member and ignores members with name {@code log} or {@code logger}.
+ * This setting will report a violation if there is no javadoc for a
+ * member with any scope and ignores members with name {@code log} or {@code logger}.
*
*
* public class Test {
@@ -183,31 +156,25 @@ public class JavadocVariableCheck
*/
public static final String MSG_JAVADOC_MISSING = "javadoc.missing";
- /** Specify the visibility scope where Javadoc comments are checked. */
- private Scope scope = Scope.PRIVATE;
-
- /** Specify the visibility scope where Javadoc comments are not checked. */
- private Scope excludeScope;
+ /** Specify the access modifiers where Javadoc comments are checked. */
+ private AccessModifierOption[] accessModifiers = {
+ AccessModifierOption.PUBLIC,
+ AccessModifierOption.PROTECTED,
+ AccessModifierOption.PACKAGE,
+ AccessModifierOption.PRIVATE,
+ };
/** Specify the regexp to define variable names to ignore. */
private Pattern ignoreNamePattern;
/**
- * Setter to specify the visibility scope where Javadoc comments are checked.
- *
- * @param scope a scope.
- */
- public void setScope(Scope scope) {
- this.scope = scope;
- }
-
- /**
- * Setter to specify the visibility scope where Javadoc comments are not checked.
+ * Setter to specify the access modifiers where Javadoc comments are checked.
*
- * @param excludeScope a scope.
+ * @param accessModifiers access modifiers of variables which should be checked.
*/
- public void setExcludeScope(Scope excludeScope) {
- this.excludeScope = excludeScope;
+ public void setAccessModifiers(AccessModifierOption... accessModifiers) {
+ this.accessModifiers =
+ Arrays.copyOf(accessModifiers, accessModifiers.length);
}
/**
@@ -279,12 +246,56 @@ private boolean shouldCheck(final DetailAST ast) {
if (!ScopeUtil.isInCodeBlock(ast) && !isIgnored(ast)) {
final Scope customScope = ScopeUtil.getScope(ast);
final Scope surroundingScope = ScopeUtil.getSurroundingScope(ast);
- result = customScope.isIn(scope) && surroundingScope.isIn(scope)
- && (excludeScope == null
- || !customScope.isIn(excludeScope)
- || !surroundingScope.isIn(excludeScope));
+
+ final Scope effectiveScope;
+ if (surroundingScope.isIn(customScope)) {
+ effectiveScope = customScope;
+ }
+ else {
+ effectiveScope = surroundingScope;
+ }
+ result = matchAccessModifiers(toAccessModifier(effectiveScope));
}
return result;
}
+ /**
+ * Checks whether a variable has the correct access modifier to be checked.
+ *
+ * @param accessModifier the access modifier of the variable.
+ * @return whether the variable matches the expected access modifier.
+ */
+ private boolean matchAccessModifiers(final AccessModifierOption accessModifier) {
+ return Arrays.stream(accessModifiers)
+ .anyMatch(modifier -> modifier == accessModifier);
+ }
+
+ /**
+ * Converts a {@link Scope} to {@link AccessModifierOption}. {@code Scope.NOTHING} and {@code
+ * Scope.ANONINNER} are converted to {@code AccessModifierOption.PUBLIC}.
+ *
+ * @param scope Scope to be converted.
+ * @return the corresponding AccessModifierOption.
+ */
+ private static AccessModifierOption toAccessModifier(Scope scope) {
+ final AccessModifierOption accessModifier;
+ switch (scope) {
+ case PROTECTED:
+ accessModifier = AccessModifierOption.PROTECTED;
+ break;
+ case PACKAGE:
+ accessModifier = AccessModifierOption.PACKAGE;
+ break;
+ case PRIVATE:
+ accessModifier = AccessModifierOption.PRIVATE;
+ break;
+ case NOTHING:
+ case ANONINNER:
+ case PUBLIC:
+ default:
+ accessModifier = AccessModifierOption.PUBLIC;
+ }
+ return accessModifier;
+ }
+
}
diff --git a/src/main/resources/com/puppycrawl/tools/checkstyle/meta/checks/javadoc/JavadocVariableCheck.xml b/src/main/resources/com/puppycrawl/tools/checkstyle/meta/checks/javadoc/JavadocVariableCheck.xml
index aea982226cd..a5e7ea0806f 100644
--- a/src/main/resources/com/puppycrawl/tools/checkstyle/meta/checks/javadoc/JavadocVariableCheck.xml
+++ b/src/main/resources/com/puppycrawl/tools/checkstyle/meta/checks/javadoc/JavadocVariableCheck.xml
@@ -8,14 +8,11 @@
Checks that a variable has a Javadoc comment. Ignores {@code serialVersionUID} fields.
</p>
-
- Specify the visibility scope where Javadoc comments are checked.
-
-
- Specify the visibility scope where Javadoc
- comments are not checked.
+
+ Specify the access modifiers where Javadoc comments are
+ checked.Specify the regexp to define variable names to ignore.
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java
index e7295c93eba..6e9edc2ef32 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java
@@ -119,7 +119,7 @@ public void testAnother4()
}
@Test
- public void testScopes() throws Exception {
+ public void testAccessModifiersAll() throws Exception {
final String[] expected = {
"15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
"16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
@@ -165,7 +165,7 @@ public void testScopes() throws Exception {
}
@Test
- public void testScopes2() throws Exception {
+ public void testAccessModifiersPublicProtected() throws Exception {
final String[] expected = {
"15:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
"16:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
@@ -178,7 +178,7 @@ public void testScopes2() throws Exception {
}
@Test
- public void testExcludeScope() throws Exception {
+ public void testAccessModifiersPrivatePackage() throws Exception {
final String[] expected = {
"17:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
"18:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner.java
index 482c15e1bfb..08953e2dbfa 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner2.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner2.java
index c6d2cfd894e..91fa9569675 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner2.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInner2.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = public
-excludeScope = (default)null
+accessModifiers = public
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInterfaceMemberScopeIsPublic.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInterfaceMemberScopeIsPublic.java
index 190b8afe014..bddb02ebfec 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInterfaceMemberScopeIsPublic.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableInterfaceMemberScopeIsPublic.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = public
-excludeScope = (default)null
+accessModifiers = public
ignoreNamePattern = (default)null
tokens = ENUM_CONSTANT_DEF, VARIABLE_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc.java
index 6a611b1d79c..671db99b0c0 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc2.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc2.java
index 1bf8a5c21da..07129362e0b 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc2.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc2.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = protected
-excludeScope = (default)null
+accessModifiers = public, protected
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc3.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc3.java
index 36ee9759a1f..95cdaa29fd4 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc3.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc3.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = protected
+accessModifiers = package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc4.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc4.java
index c2d60dd66c2..3e262230189 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc4.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc4.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = log|logger
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc5.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc5.java
index b87bd6553a1..7e8b059bb95 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc5.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadoc5.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern =
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadocNeededInLambda.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadocNeededInLambda.java
index 75a834c7d19..f3b508eec41 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadocNeededInLambda.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableNoJavadocNeededInLambda.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly.java
index 43f15016517..e625b28fb13 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly2.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly2.java
index 1e2876e035b..31c592e7ecf 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly2.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariablePublicOnly2.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = public
-excludeScope = (default)null
+accessModifiers = public
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableTags.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableTags.java
index beccae83a79..566eeb21be8 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableTags.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocvariable/InputJavadocVariableTags.java
@@ -1,11 +1,11 @@
/*
JavadocVariable
-scope = (default)private
-excludeScope = (default)null
+accessModifiers = (default)public, protected, package, private
ignoreNamePattern = (default)null
tokens = (default)ENUM_CONSTANT_DEF
+
*/
package com.puppycrawl.tools.checkstyle.checks.javadoc.javadocvariable;
diff --git a/src/xdocs/config_javadoc.xml b/src/xdocs/config_javadoc.xml
index 1d753f28a10..b87b210ceb1 100644
--- a/src/xdocs/config_javadoc.xml
+++ b/src/xdocs/config_javadoc.xml
@@ -2280,18 +2280,13 @@ class DatabaseConfiguration {}
since
-
scope
-
Specify the visibility scope where Javadoc comments are checked.
@@ -2326,7 +2321,7 @@ class DatabaseConfiguration {}
By default, this setting will report a violation if
- there is no javadoc for any scope member.
+ there is no javadoc for a member with any access modifier.
public class Test {
@@ -2343,48 +2338,18 @@ public int d; // violation, missing javadoc for public member
- This setting will report a violation if there
- is no javadoc for public member.
-
-
-public class Test {
-private int a; // OK
-
-/**
- * Some description here
- */
-private int b; // OK
-protected int c; // OK
-public int d; // violation, missing javadoc for public member
-/*package*/ int e; // OK
-}
-
-
-
- To configure the check for members which are in private, but not in
- protected scope:
+ To configure the check for package and private
+ variables:
This setting will report a violation if there is no
- javadoc for private member and
- ignores protected member.
+ javadoc for package or private members.
public class Test {
@@ -2411,7 +2376,7 @@ public int d; // OK
This setting will report a violation if there is no
- javadoc for any scope member and ignores members with
+ javadoc for a member with any scope and ignores members with
name log or logger.