diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java index 2b8b6d862..aef0f221b 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java @@ -30,8 +30,13 @@ public abstract class AbstractOptionCheck extends Check { /** the policy to enforce */ - protected AbstractOption mOption = null; + private AbstractOption mOption; + public AbstractOptionCheck(AbstractOption aDefault) + { + mOption = aDefault; + } + /** * Set the option to enforce. * @param aOption string to decode option from diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/EmptyBlockCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/EmptyBlockCheck.java index 758ec888b..c6499f8cc 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/EmptyBlockCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/EmptyBlockCheck.java @@ -28,6 +28,11 @@ import com.puppycrawl.tools.checkstyle.api.TokenTypes; */ public class EmptyBlockCheck extends AbstractOptionCheck { + public EmptyBlockCheck() + { + super(BlockOption.STMT); + } + /** @see com.puppycrawl.tools.checkstyle.api.Check */ public int[] getDefaultTokens() { @@ -52,7 +57,7 @@ public class EmptyBlockCheck extends AbstractOptionCheck { final DetailAST slistAST = aAST.findFirstToken(TokenTypes.SLIST); if (slistAST != null) { - if (mOption == BlockOption.STMT) { + if (getAbstractOption() == BlockOption.STMT) { if (slistAST.getChildCount() <= 1) { log(slistAST.getLineNo(), slistAST.getColumnNo(), @@ -60,7 +65,7 @@ public class EmptyBlockCheck extends AbstractOptionCheck aAST.getText()); } } - else if (mOption == BlockOption.TEXT) { + else if (getAbstractOption() == BlockOption.TEXT) { if (!hasText(slistAST)) { log(slistAST.getLineNo(), slistAST.getColumnNo(), @@ -71,6 +76,10 @@ public class EmptyBlockCheck extends AbstractOptionCheck } } + /** + * @param slistAST a DetailAST value + * @return whether the SLIST token contains any text. + */ private boolean hasText(final DetailAST slistAST) { boolean retVal = false; diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/LeftCurlyCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/LeftCurlyCheck.java index 36c57bda3..733621e7e 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/LeftCurlyCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/LeftCurlyCheck.java @@ -27,8 +27,7 @@ public abstract class LeftCurlyCheck */ public LeftCurlyCheck() { - super(); - mOption = LeftCurlyOption.EOL; + super(LeftCurlyOption.EOL); } /** @see the hack above */ @@ -62,13 +61,13 @@ public abstract class LeftCurlyCheck { // ignore } - else if (mOption == LeftCurlyOption.NL) { + else if (getAbstractOption() == LeftCurlyOption.NL) { if (!Utils.whitespaceBefore(aBrace.getColumnNo(), braceLine)) { log(aBrace.getLineNo(), aBrace.getColumnNo(), "line.new", "{"); } } - else if (mOption == LeftCurlyOption.EOL) { + else if (getAbstractOption() == LeftCurlyOption.EOL) { if (Utils.whitespaceBefore(aBrace.getColumnNo(), braceLine) && ((prevLineLen + 2) <= mMaxLineLength)) { @@ -76,7 +75,7 @@ public abstract class LeftCurlyCheck "line.previous", "{"); } } - else if (mOption == LeftCurlyOption.NLOW) { + else if (getAbstractOption() == LeftCurlyOption.NLOW) { if (aStartToken.getLineNo() == aBrace.getLineNo()) { // all ok as on the same line } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/ParenPadCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/ParenPadCheck.java index ce1460f21..c674c3e62 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/ParenPadCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/ParenPadCheck.java @@ -37,8 +37,7 @@ public class ParenPadCheck */ public ParenPadCheck() { - super(); - mOption = PadOption.NOSPACE; + super(PadOption.NOSPACE); } /** @see com.puppycrawl.tools.checkstyle.api.Check */ @@ -73,12 +72,12 @@ public class ParenPadCheck final String line = getLines()[aAST.getLineNo() - 1]; final int after = aAST.getColumnNo() + 1; if (after < line.length()) { - if ((PadOption.NOSPACE == mOption) + if ((PadOption.NOSPACE == getAbstractOption()) && (Character.isWhitespace(line.charAt(after)))) { log(aAST.getLineNo(), after, "ws.followed", "("); } - else if ((PadOption.SPACE == mOption) + else if ((PadOption.SPACE == getAbstractOption()) && !Character.isWhitespace(line.charAt(after)) && (line.charAt(after) != ')')) { @@ -96,13 +95,13 @@ public class ParenPadCheck final String line = getLines()[aAST.getLineNo() - 1]; final int before = aAST.getColumnNo() - 1; if (before >= 0) { - if ((PadOption.NOSPACE == mOption) + if ((PadOption.NOSPACE == getAbstractOption()) && Character.isWhitespace(line.charAt(before)) && !Utils.whitespaceBefore(before, line)) { log(aAST.getLineNo(), before, "ws.preceeded", ")"); } - else if ((PadOption.SPACE == mOption) + else if ((PadOption.SPACE == getAbstractOption()) && !Character.isWhitespace(line.charAt(before)) && (line.charAt(before) != '(')) { diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/RightCurlyCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/RightCurlyCheck.java index 4690dff7b..d96a95690 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/RightCurlyCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/RightCurlyCheck.java @@ -37,8 +37,7 @@ public class RightCurlyCheck */ public RightCurlyCheck() { - super(); - mOption = RightCurlyOption.SAME; + super(RightCurlyOption.SAME); } /** @see com.puppycrawl.tools.checkstyle.api.Check */ @@ -72,13 +71,13 @@ public class RightCurlyCheck // If have both tokens, perform the check if ((rcurly != null) && (nextToken != null)) { - if ((mOption == RightCurlyOption.SAME) + if ((getAbstractOption() == RightCurlyOption.SAME) && (rcurly.getLineNo() != nextToken.getLineNo())) { log(rcurly.getLineNo(), rcurly.getColumnNo(), "line.same", "}"); } - else if ((mOption == RightCurlyOption.ALONE) + else if ((getAbstractOption() == RightCurlyOption.ALONE) && (rcurly.getLineNo() == nextToken.getLineNo())) { log(rcurly.getLineNo(), rcurly.getColumnNo(), diff --git a/src/tests/com/puppycrawl/tools/checkstyle/EmptyBlockCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/EmptyBlockCheckTest.java index 968bbd230..d938cfec7 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/EmptyBlockCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/EmptyBlockCheckTest.java @@ -19,7 +19,16 @@ public class EmptyBlockCheckTest final Checker c = createChecker(checkConfig); final String fname = getPath("InputSemantic.java"); final String[] expected = { - }; + "52:65: Must have at least one statement.", + "54:41: Must have at least one statement.", + "71:38: Must have at least one statement.", + "72:52: Must have at least one statement.", + "73:45: Must have at least one statement.", + "75:13: Must have at least one statement.", + "77:17: Must have at least one statement.", + "79:13: Must have at least one statement.", + "82:17: Must have at least one statement.", + }; verify(c, fname, expected); } @@ -40,7 +49,7 @@ public class EmptyBlockCheckTest }; verify(c, fname, expected); } - + public void testStatement() throws Exception {