From cdf0ac0f4c4fb8ab63c4bb7d144a71682c6e400a Mon Sep 17 00:00:00 2001 From: Oleg Sukhodolsky Date: Sat, 27 Mar 2004 21:10:17 +0000 Subject: [PATCH] Scoping for javadoc checks --- .../checks/javadoc/JavadocMethodCheck.java | 60 ++++++---- .../checks/javadoc/JavadocStyleCheck.java | 64 ++++++---- .../checks/javadoc/JavadocTypeCheck.java | 67 +++++++---- .../checks/javadoc/JavadocVariableCheck.java | 62 ++++++---- .../checkstyle/javadoc/InputNoJavadoc.java | 108 +++++++++++++++++ .../javadoc/JavadocMethodCheckTest.java | 109 ++++++++++++++++++ .../checks/javadoc/JavadocStyleCheckTest.java | 23 ++++ .../checks/javadoc/JavadocTypeCheckTest.java | 56 +++++++++ .../javadoc/JavadocVariableCheckTest.java | 109 ++++++++++++++++++ 9 files changed, 574 insertions(+), 84 deletions(-) create mode 100644 src/testinputs/com/puppycrawl/tools/checkstyle/javadoc/InputNoJavadoc.java diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java index 557160dff..05110820c 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java @@ -138,6 +138,9 @@ public class JavadocMethodCheck /** the visibility scope where Javadoc comments are checked **/ private Scope mScope = Scope.PRIVATE; + /** the visibility scope where Javadoc comments shouldn't be checked **/ + private Scope mExcludeScope; + /** * controls whether to allow documented exceptions that * are not declared if they are a subclass of @@ -182,6 +185,15 @@ public class JavadocMethodCheck mScope = Scope.getInstance(aFrom); } + /** + * Set the excludeScope. + * @param aScope a String value + */ + public void setExcludeScope(String aScope) + { + mExcludeScope = Scope.getInstance(aScope); + } + /** * controls whether to allow documented exceptions that * are not declared if they are a subclass of @@ -271,32 +283,38 @@ public class JavadocMethodCheck */ protected final void processAST(DetailAST aAST) { - final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); - final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); - final Scope targetScope = - ScopeUtils.inInterfaceBlock(aAST) - ? Scope.PUBLIC - : declaredScope; + if (shouldCheck(aAST)) { + final FileContents contents = getFileContents(); + final TextBlock cmt = contents.getJavadocBefore(aAST.getLineNo()); - if (targetScope.isIn(mScope)) { - final Scope surroundingScope = - ScopeUtils.getSurroundingScope(aAST); - - if (surroundingScope.isIn(mScope)) { - final FileContents contents = getFileContents(); - final TextBlock cmt = - contents.getJavadocBefore(aAST.getLineNo()); - - if (cmt == null) { - log(aAST, "javadoc.missing"); - } - else { - checkComment(aAST, cmt); - } + if (cmt == null) { + log(aAST, "javadoc.missing"); + } + else { + checkComment(aAST, cmt); } } } + /** + * Whether we should check this node. + * @param aAST a given node. + * @return whether we should check a given node. + */ + private boolean shouldCheck(final DetailAST aAST) + { + final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); + final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); + final Scope scope = + ScopeUtils.inInterfaceBlock(aAST) ? Scope.PUBLIC : declaredScope; + final Scope surroundingScope = ScopeUtils.getSurroundingScope(aAST); + + return scope.isIn(mScope) && surroundingScope.isIn(mScope) + && ((mExcludeScope == null) + || !scope.isIn(mExcludeScope) + || !surroundingScope.isIn(mExcludeScope)); + } + /** * Checks the Javadoc for a method. * @param aAST the token for the method diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java index 227fbc8ab..8761bfbaa 100755 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheck.java @@ -69,6 +69,9 @@ public class JavadocStyleCheck /** The scope to check. */ private Scope mScope = Scope.PRIVATE; + /** the visibility scope where Javadoc comments shouldn't be checked **/ + private Scope mExcludeScope; + /** Regular expression for matching the end of a sentence. */ private RE mEndOfSentenceRE; @@ -109,32 +112,40 @@ public class JavadocStyleCheck */ public void visitToken(DetailAST aAST) { - if (!ScopeUtils.inCodeBlock(aAST)) { - final DetailAST mods = - aAST.findFirstToken(TokenTypes.MODIFIERS); - final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); - final Scope variableScope = - ScopeUtils.inInterfaceBlock(aAST) - ? Scope.PUBLIC - : declaredScope; + if (shouldCheck(aAST)) { + final FileContents contents = getFileContents(); + final TextBlock cmt = + contents.getJavadocBefore(aAST.getLineNo()); - if (variableScope.isIn(mScope)) { - final Scope surroundingScope = - ScopeUtils.getSurroundingScope(aAST); - - if ((surroundingScope == null) - || surroundingScope.isIn(mScope)) - { - final FileContents contents = getFileContents(); - final TextBlock cmt = - contents.getJavadocBefore(aAST.getLineNo()); - - checkComment(cmt); - } - } + checkComment(cmt); } } + /** + * Whether we should check this node. + * @param aAST a given node. + * @return whether we should check a given node. + */ + private boolean shouldCheck(final DetailAST aAST) + { + if (ScopeUtils.inCodeBlock(aAST)) { + return false; + } + + final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); + final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); + final Scope scope = + ScopeUtils.inInterfaceBlock(aAST) ? Scope.PUBLIC : declaredScope; + final Scope surroundingScope = ScopeUtils.getSurroundingScope(aAST); + + return scope.isIn(mScope) + && ((surroundingScope == null) || surroundingScope.isIn(mScope)) + && ((mExcludeScope == null) + || !scope.isIn(mExcludeScope) + || (surroundingScope != null) + && !surroundingScope.isIn(mExcludeScope)); + } + /** * Performs the various checks agains the Javadoc comment. * @@ -445,6 +456,15 @@ public class JavadocStyleCheck mScope = Scope.getInstance(aFrom); } + /** + * Set the excludeScope. + * @param aScope a String value + */ + public void setExcludeScope(String aScope) + { + mExcludeScope = Scope.getInstance(aScope); + } + /** * Returns a regular expression for matching the end of a sentence. * diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java index 7a5278ade..b5482a246 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java @@ -85,6 +85,8 @@ public class JavadocTypeCheck { /** the scope to check for */ private Scope mScope = Scope.PRIVATE; + /** the visibility scope where Javadoc comments shouldn't be checked **/ + private Scope mExcludeScope; /** compiled regexp to match author tag content **/ private RE mAuthorFormatRE; /** compiled regexp to match version tag content **/ @@ -103,6 +105,15 @@ public class JavadocTypeCheck mScope = Scope.getInstance(aFrom); } + /** + * Set the excludeScope. + * @param aScope a String value + */ + public void setExcludeScope(String aScope) + { + mExcludeScope = Scope.getInstance(aScope); + } + /** * Set the author tag pattern. * @param aFormat a String value @@ -147,31 +158,45 @@ public class JavadocTypeCheck /** @see com.puppycrawl.tools.checkstyle.api.Check */ public void visitToken(DetailAST aAST) { - final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); - final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); - final Scope typeScope = - ScopeUtils.inInterfaceBlock(aAST) ? Scope.PUBLIC : declaredScope; - if (typeScope.isIn(mScope)) { - final Scope surroundingScope = ScopeUtils.getSurroundingScope(aAST); - if ((surroundingScope == null) || surroundingScope.isIn(mScope)) { - final FileContents contents = getFileContents(); - final int lineNo = aAST.getLineNo(); - final TextBlock cmt = contents.getJavadocBefore(lineNo); - if (cmt == null) { - log(lineNo, "javadoc.missing"); - } - else if (ScopeUtils.isOuterMostType(aAST)) { - // don't check author/version for inner classes - Vector tags = getJavadocTags(cmt); - checkTag(lineNo, tags, "author", - mAuthorFormatRE, mAuthorFormat); - checkTag(lineNo, tags, "version", - mVersionFormatRE, mVersionFormat); - } + if (shouldCheck(aAST)) { + final FileContents contents = getFileContents(); + final int lineNo = aAST.getLineNo(); + final TextBlock cmt = contents.getJavadocBefore(lineNo); + if (cmt == null) { + log(lineNo, "javadoc.missing"); + } + else if (ScopeUtils.isOuterMostType(aAST)) { + // don't check author/version for inner classes + Vector tags = getJavadocTags(cmt); + checkTag(lineNo, tags, "author", + mAuthorFormatRE, mAuthorFormat); + checkTag(lineNo, tags, "version", + mVersionFormatRE, mVersionFormat); } } } + /** + * Whether we should check this node. + * @param aAST a given node. + * @return whether we should check a given node. + */ + private boolean shouldCheck(final DetailAST aAST) + { + final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); + final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); + final Scope scope = + ScopeUtils.inInterfaceBlock(aAST) ? Scope.PUBLIC : declaredScope; + final Scope surroundingScope = ScopeUtils.getSurroundingScope(aAST); + + return scope.isIn(mScope) + && ((surroundingScope == null) || surroundingScope.isIn(mScope)) + && ((mExcludeScope == null) + || !scope.isIn(mExcludeScope) + || (surroundingScope != null) + && !surroundingScope.isIn(mExcludeScope)); + } + /** * Gets all standalone tags from a given javadoc. * @param aCmt teh Javadoc comment to process. diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheck.java index b30d7aaf4..6c918160f 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheck.java @@ -55,6 +55,9 @@ public class JavadocVariableCheck /** the scope to check */ private Scope mScope = Scope.PRIVATE; + /** the visibility scope where Javadoc comments shouldn't be checked **/ + private Scope mExcludeScope; + /** * Sets the scope to check. * @param aFrom string to get the scope from @@ -64,6 +67,15 @@ public class JavadocVariableCheck mScope = Scope.getInstance(aFrom); } + /** + * Set the excludeScope. + * @param aScope a String value + */ + public void setExcludeScope(String aScope) + { + mExcludeScope = Scope.getInstance(aScope); + } + /** @see com.puppycrawl.tools.checkstyle.api.Check */ public int[] getDefaultTokens() { @@ -73,28 +85,38 @@ public class JavadocVariableCheck /** @see com.puppycrawl.tools.checkstyle.api.Check */ public void visitToken(DetailAST aAST) { - if (!ScopeUtils.inCodeBlock(aAST)) { - final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); - final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); - final Scope variableScope = - ScopeUtils.inInterfaceBlock(aAST) - ? Scope.PUBLIC - : declaredScope; + if (shouldCheck(aAST)) { + final FileContents contents = getFileContents(); + final TextBlock cmt = + contents.getJavadocBefore(aAST.getLineNo()); - if (variableScope.isIn(mScope)) { - final Scope surroundingScope = - ScopeUtils.getSurroundingScope(aAST); - - if (surroundingScope.isIn(mScope)) { - final FileContents contents = getFileContents(); - final TextBlock cmt = - contents.getJavadocBefore(aAST.getLineNo()); - - if (cmt == null) { - log(aAST, "javadoc.missing"); - } - } + if (cmt == null) { + log(aAST, "javadoc.missing"); } } } + + /** + * Whether we should check this node. + * @param aAST a given node. + * @return whether we should check a given node. + */ + private boolean shouldCheck(final DetailAST aAST) + { + if (ScopeUtils.inCodeBlock(aAST)) { + return false; + } + + final DetailAST mods = aAST.findFirstToken(TokenTypes.MODIFIERS); + final Scope declaredScope = ScopeUtils.getScopeFromMods(mods); + final Scope scope = + ScopeUtils.inInterfaceBlock(aAST) ? Scope.PUBLIC : declaredScope; + final Scope surroundingScope = ScopeUtils.getSurroundingScope(aAST); + + return scope.isIn(mScope) && surroundingScope.isIn(mScope) + && ((mExcludeScope == null) + || !scope.isIn(mExcludeScope) + || !surroundingScope.isIn(mExcludeScope)); + } + } diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/javadoc/InputNoJavadoc.java b/src/testinputs/com/puppycrawl/tools/checkstyle/javadoc/InputNoJavadoc.java new file mode 100644 index 000000000..d2738d916 --- /dev/null +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/javadoc/InputNoJavadoc.java @@ -0,0 +1,108 @@ +public class InputNoJavadic +{ + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + + protected class ProtectedInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } + + class PackageInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } + + private class PrivateInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } +} + +class PackageClass { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + + public class PublicInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } + + protected class ProtectedInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } + + class PackageInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } + + private class PrivateInner { + public int i1; + protected int i2; + int i3; + private int i4; + + public foo1() {} + protected foo2() {} + foo3() {} + private foo4() {} + } +} diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java index c8ed8ffe3..68f674dc8 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java @@ -4,6 +4,7 @@ import com.puppycrawl.tools.checkstyle.BaseCheckTestCase; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; import com.puppycrawl.tools.checkstyle.api.Scope; +import java.io.File; public class JavadocMethodCheckTest extends BaseCheckTestCase @@ -217,4 +218,112 @@ public class JavadocMethodCheckTest }; verify(checkConfig, getPath("InputTags.java"), expected); } + + public void testScopes() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocMethodCheck.class); + final String[] expected = { + "8:5: Missing a Javadoc comment.", + "9:5: Missing a Javadoc comment.", + "10:5: Missing a Javadoc comment.", + "11:5: Missing a Javadoc comment.", + "19:9: Missing a Javadoc comment.", + "20:9: Missing a Javadoc comment.", + "21:9: Missing a Javadoc comment.", + "22:9: Missing a Javadoc comment.", + "31:9: Missing a Javadoc comment.", + "32:9: Missing a Javadoc comment.", + "33:9: Missing a Javadoc comment.", + "34:9: Missing a Javadoc comment.", + "43:9: Missing a Javadoc comment.", + "44:9: Missing a Javadoc comment.", + "45:9: Missing a Javadoc comment.", + "46:9: Missing a Javadoc comment.", + "56:5: Missing a Javadoc comment.", + "57:5: Missing a Javadoc comment.", + "58:5: Missing a Javadoc comment.", + "59:5: Missing a Javadoc comment.", + "67:9: Missing a Javadoc comment.", + "68:9: Missing a Javadoc comment.", + "69:9: Missing a Javadoc comment.", + "70:9: Missing a Javadoc comment.", + "79:9: Missing a Javadoc comment.", + "80:9: Missing a Javadoc comment.", + "81:9: Missing a Javadoc comment.", + "82:9: Missing a Javadoc comment.", + "91:9: Missing a Javadoc comment.", + "92:9: Missing a Javadoc comment.", + "93:9: Missing a Javadoc comment.", + "94:9: Missing a Javadoc comment.", + "103:9: Missing a Javadoc comment.", + "104:9: Missing a Javadoc comment.", + "105:9: Missing a Javadoc comment.", + "106:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testScopes2() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocMethodCheck.class); + checkConfig.addAttribute("scope", Scope.PROTECTED.getName()); + final String[] expected = { + "8:5: Missing a Javadoc comment.", + "9:5: Missing a Javadoc comment.", + "19:9: Missing a Javadoc comment.", + "20:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testExcludeScope() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocMethodCheck.class); + checkConfig.addAttribute("scope", Scope.PRIVATE.getName()); + checkConfig.addAttribute("excludeScope", Scope.PROTECTED.getName()); + final String[] expected = { + "10:5: Missing a Javadoc comment.", + "11:5: Missing a Javadoc comment.", + "21:9: Missing a Javadoc comment.", + "22:9: Missing a Javadoc comment.", + "31:9: Missing a Javadoc comment.", + "32:9: Missing a Javadoc comment.", + "33:9: Missing a Javadoc comment.", + "34:9: Missing a Javadoc comment.", + "43:9: Missing a Javadoc comment.", + "44:9: Missing a Javadoc comment.", + "45:9: Missing a Javadoc comment.", + "46:9: Missing a Javadoc comment.", + "56:5: Missing a Javadoc comment.", + "57:5: Missing a Javadoc comment.", + "58:5: Missing a Javadoc comment.", + "59:5: Missing a Javadoc comment.", + "67:9: Missing a Javadoc comment.", + "68:9: Missing a Javadoc comment.", + "69:9: Missing a Javadoc comment.", + "70:9: Missing a Javadoc comment.", + "79:9: Missing a Javadoc comment.", + "80:9: Missing a Javadoc comment.", + "81:9: Missing a Javadoc comment.", + "82:9: Missing a Javadoc comment.", + "91:9: Missing a Javadoc comment.", + "92:9: Missing a Javadoc comment.", + "93:9: Missing a Javadoc comment.", + "94:9: Missing a Javadoc comment.", + "103:9: Missing a Javadoc comment.", + "104:9: Missing a Javadoc comment.", + "105:9: Missing a Javadoc comment.", + "106:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheckTest.java index 2074e1fd4..1e3ee546c 100755 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocStyleCheckTest.java @@ -160,4 +160,27 @@ public class JavadocStyleCheckTest verify(checkConfig, getPath("InputJavadocStyleCheck.java"), expected); } + public void testExcludeScope() + throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocStyleCheck.class); + checkConfig.addAttribute("scope", "private"); + checkConfig.addAttribute("excludeScope", "protected"); + final String[] expected = + { + "20: First sentence should end with a period.", + "53: First sentence should end with a period.", + "63:11: Unclosed HTML tag found: This guy is missing end of bold tag", + "66:7: Extra HTML tag found: Extra tag shouldn't be here", + "68:19: Unclosed HTML tag found: dummy.", + "81: First sentence should end with a period.", + "82:31: Unclosed HTML tag found: should fail", + "109:39: Extra HTML tag found: ", + "186:8: Unclosed HTML tag found:
", + "193: First sentence should end with a period.", + }; + + verify(checkConfig, getPath("InputJavadocStyleCheck.java"), expected); + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheckTest.java index d0cc5a08c..7b7631146 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheckTest.java @@ -4,6 +4,8 @@ import com.puppycrawl.tools.checkstyle.BaseCheckTestCase; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; import com.puppycrawl.tools.checkstyle.api.Scope; +import java.io.File; + /** * @author Oliver.Burn * @@ -196,4 +198,58 @@ public class JavadocTypeCheckTest extends BaseCheckTestCase }; verify(checkConfig, getPath("InputJavadoc.java"), expected); } + + public void testScopes() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocTypeCheck.class); + final String[] expected = { + "1: Missing a Javadoc comment.", + "13: Missing a Javadoc comment.", + "25: Missing a Javadoc comment.", + "37: Missing a Javadoc comment.", + "50: Missing a Javadoc comment.", + "61: Missing a Javadoc comment.", + "73: Missing a Javadoc comment.", + "85: Missing a Javadoc comment.", + "97: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testScopes2() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocTypeCheck.class); + checkConfig.addAttribute("scope", Scope.PROTECTED.getName()); + final String[] expected = { + "1: Missing a Javadoc comment.", + "13: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testExcludeScope() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocTypeCheck.class); + checkConfig.addAttribute("scope", Scope.PRIVATE.getName()); + checkConfig.addAttribute("excludeScope", Scope.PROTECTED.getName()); + final String[] expected = { + "25: Missing a Javadoc comment.", + "37: Missing a Javadoc comment.", + "50: Missing a Javadoc comment.", + "61: Missing a Javadoc comment.", + "73: Missing a Javadoc comment.", + "85: Missing a Javadoc comment.", + "97: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java index 61a2e5a68..104aa551c 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocVariableCheckTest.java @@ -4,6 +4,7 @@ import com.puppycrawl.tools.checkstyle.BaseCheckTestCase; import com.puppycrawl.tools.checkstyle.DefaultConfiguration; import com.puppycrawl.tools.checkstyle.api.Scope; +import java.io.File; public class JavadocVariableCheckTest extends BaseCheckTestCase @@ -70,4 +71,112 @@ public class JavadocVariableCheckTest }; verify(checkConfig, getPath("InputPublicOnly.java"), expected); } + + public void testScopes() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocVariableCheck.class); + final String[] expected = { + "3:5: Missing a Javadoc comment.", + "4:5: Missing a Javadoc comment.", + "5:5: Missing a Javadoc comment.", + "6:5: Missing a Javadoc comment.", + "14:9: Missing a Javadoc comment.", + "15:9: Missing a Javadoc comment.", + "16:9: Missing a Javadoc comment.", + "17:9: Missing a Javadoc comment.", + "26:9: Missing a Javadoc comment.", + "27:9: Missing a Javadoc comment.", + "28:9: Missing a Javadoc comment.", + "29:9: Missing a Javadoc comment.", + "38:9: Missing a Javadoc comment.", + "39:9: Missing a Javadoc comment.", + "40:9: Missing a Javadoc comment.", + "41:9: Missing a Javadoc comment.", + "51:5: Missing a Javadoc comment.", + "52:5: Missing a Javadoc comment.", + "53:5: Missing a Javadoc comment.", + "54:5: Missing a Javadoc comment.", + "62:9: Missing a Javadoc comment.", + "63:9: Missing a Javadoc comment.", + "64:9: Missing a Javadoc comment.", + "65:9: Missing a Javadoc comment.", + "74:9: Missing a Javadoc comment.", + "75:9: Missing a Javadoc comment.", + "76:9: Missing a Javadoc comment.", + "77:9: Missing a Javadoc comment.", + "86:9: Missing a Javadoc comment.", + "87:9: Missing a Javadoc comment.", + "88:9: Missing a Javadoc comment.", + "89:9: Missing a Javadoc comment.", + "98:9: Missing a Javadoc comment.", + "99:9: Missing a Javadoc comment.", + "100:9: Missing a Javadoc comment.", + "101:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testScopes2() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocVariableCheck.class); + checkConfig.addAttribute("scope", Scope.PROTECTED.getName()); + final String[] expected = { + "3:5: Missing a Javadoc comment.", + "4:5: Missing a Javadoc comment.", + "14:9: Missing a Javadoc comment.", + "15:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } + + public void testExcludeScope() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(JavadocVariableCheck.class); + checkConfig.addAttribute("scope", Scope.PRIVATE.getName()); + checkConfig.addAttribute("excludeScope", Scope.PROTECTED.getName()); + final String[] expected = { + "5:5: Missing a Javadoc comment.", + "6:5: Missing a Javadoc comment.", + "16:9: Missing a Javadoc comment.", + "17:9: Missing a Javadoc comment.", + "26:9: Missing a Javadoc comment.", + "27:9: Missing a Javadoc comment.", + "28:9: Missing a Javadoc comment.", + "29:9: Missing a Javadoc comment.", + "38:9: Missing a Javadoc comment.", + "39:9: Missing a Javadoc comment.", + "40:9: Missing a Javadoc comment.", + "41:9: Missing a Javadoc comment.", + "51:5: Missing a Javadoc comment.", + "52:5: Missing a Javadoc comment.", + "53:5: Missing a Javadoc comment.", + "54:5: Missing a Javadoc comment.", + "62:9: Missing a Javadoc comment.", + "63:9: Missing a Javadoc comment.", + "64:9: Missing a Javadoc comment.", + "65:9: Missing a Javadoc comment.", + "74:9: Missing a Javadoc comment.", + "75:9: Missing a Javadoc comment.", + "76:9: Missing a Javadoc comment.", + "77:9: Missing a Javadoc comment.", + "86:9: Missing a Javadoc comment.", + "87:9: Missing a Javadoc comment.", + "88:9: Missing a Javadoc comment.", + "89:9: Missing a Javadoc comment.", + "98:9: Missing a Javadoc comment.", + "99:9: Missing a Javadoc comment.", + "100:9: Missing a Javadoc comment.", + "101:9: Missing a Javadoc comment.", + }; + verify(checkConfig, + getPath("javadoc" + File.separator +"InputNoJavadoc.java"), + expected); + } }