diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java index 437115230..673c63e03 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Checker.java @@ -176,7 +176,7 @@ public class Checker LocalizedMessage.setLocale(new Locale(mConfig.getLocaleLanguage(), mConfig.getLocaleCountry())); mMessages = new LocalizedMessages(mConfig.getTabWidth()); - mWalker = new TreeWalker(mMessages); + mWalker = new TreeWalker(mMessages, mConfig.getTabWidth()); // TODO: improve the error handing for (int i = 0; i < aConfigs.length; i++) { final CheckConfiguration config = aConfigs[i]; diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/TreeWalker.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/TreeWalker.java index 8a95fe056..8595e727f 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/TreeWalker.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/TreeWalker.java @@ -52,6 +52,8 @@ class TreeWalker private final Set mAllChecks = new HashSet(); /** collects the error messages */ private final LocalizedMessages mMessages; + /** the tab width for error reporting */ + private final int mTabWidth; // initialise the constants static { @@ -82,9 +84,10 @@ class TreeWalker * * @param aMessages used to collect messages */ - public TreeWalker(LocalizedMessages aMessages) + public TreeWalker(LocalizedMessages aMessages, int aTabWidth) { mMessages = aMessages; + mTabWidth = aTabWidth; } /** @@ -109,6 +112,7 @@ class TreeWalker void registerCheck(Check aCheck, CheckConfiguration aConfig) { aCheck.setMessages(mMessages); + aCheck.setTabWidth(mTabWidth); if (!aConfig.getTokens().isEmpty()) { final Iterator it = aConfig.getTokens().iterator(); while (it.hasNext()) { diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java index ee5c2d256..2bbcf58fe 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java @@ -444,7 +444,6 @@ class Verifier */ void verifyWSAroundEnd(int aLineNo, int aColNo, String aText) { - verifyWSAroundBegin(aLineNo, aColNo - aText.length(), aText); } @@ -456,23 +455,6 @@ class Verifier */ void verifyWSAroundBegin(int aLineNo, int aColNo, String aText) { - if (mConfig.isIgnoreWhitespace()) { - return; - } - - final String line = mLines[aLineNo - 1]; - final int before = aColNo - 2; - final int after = aColNo + aText.length() - 1; - - if ((before >= 0) && !Character.isWhitespace(line.charAt(before))) { - mMessages.add(aLineNo, before + 1, "ws.notPreceeded", aText); - } - - if ((after < line.length()) - && !Character.isWhitespace(line.charAt(after))) - { - mMessages.add(aLineNo, after, "ws.notFollowed", aText); - } } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Check.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Check.java index 138d03d85..20d0d6c6a 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Check.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/Check.java @@ -47,6 +47,8 @@ public abstract class Check private Map mTreeContext; /** the context for a check across a token. */ private Map mTokenContext; + /** the tab with for column reporting */ + private int mTabWidth = 8; // meaningful default /** * Returns the default token a check is interested in. Only used if the @@ -182,7 +184,7 @@ public abstract class Check * Returns the lines associated with the tree. * @return the file contents */ - protected final String[] getLines() + public final String[] getLines() { return (String[]) getTreeContext().get(LINES_ATTRIBUTE); } @@ -196,11 +198,26 @@ public abstract class Check getTreeContext().put(FILENAME_ATTRIBUTE, aFilename); } + /** @return the tab width to report errors with */ + public int getTabWidth() + { + return mTabWidth; + } + + /** + * Set the tab width to report errors with + * @param aTabWidth an int value + */ + public void setTabWidth(int aTabWidth) + { + mTabWidth = aTabWidth; + } + /** * Returns the filename associated with the tree. * @return the file name */ - protected final String getFilename() + public final String getFilename() { return (String) getTreeContext().get(FILENAME_ATTRIBUTE); } @@ -211,7 +228,7 @@ public abstract class Check * @param aLine the line number where the error was found * @param aKey the message that describes the error */ - protected final void log(int aLine, String aKey) + public final void log(int aLine, String aKey) { log(aLine, aKey, EMPTY_OBJECT_ARRAY); } @@ -227,7 +244,8 @@ public abstract class Check */ protected final void log(int aLine, String aKey, Object aArgs[]) { - log(aLine, 0, aKey, aArgs); + mMessages.add(new LocalizedMessage( + aLine, getResourceBundle(), aKey, aArgs)); } @@ -323,12 +341,10 @@ public abstract class Check */ public void log(int aLineNo, int aColNo, String aKey, Object[] aArgs) { - // TODO: need to fix this ugly hack below!!!!!! - final int col = aColNo + 1; -// final int col = 1 + Utils.lengthExpandedTabs( -// mLines[aLineNo - 1], aColNo, mTabWidth); + final int col = 1 + Utils.lengthExpandedTabs( + getLines()[aLineNo - 1], aColNo, getTabWidth()); mMessages.add(new LocalizedMessage( - aLineNo, col, getResourceBundle(), aKey, aArgs)); + aLineNo, col, getResourceBundle(), aKey, aArgs)); } diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/LocalizedMessages.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/LocalizedMessages.java index 4e8eb06a4..c6f22febc 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/api/LocalizedMessages.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/api/LocalizedMessages.java @@ -34,9 +34,9 @@ public class LocalizedMessages { /** contains the messages logged **/ private final ArrayList mMessages = new ArrayList(); - /** the tabwidth to calculate columns **/ + /** the tabwidth to calculate columns TODO: remove */ private final int mTabWidth; - /** the lines of the file being checked **/ + /** the lines of the file being checked, TODO: remove */ private String[] mLines; /** Name of the exising resource bundle * TODO: remove this diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/WhitespaceAroundCheck.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/WhitespaceAroundCheck.java index 36580eaa7..1a5545280 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/WhitespaceAroundCheck.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/checks/WhitespaceAroundCheck.java @@ -32,7 +32,7 @@ public class WhitespaceAroundCheck { return new int[] { QUESTION, // '?' - // COLON, // ':' TODO: dont flag after "case" + COLON, // ':' TODO: dont flag after "case" ASSIGN, // '=' EQUAL, // "==" NOT_EQUAL, // "!=" @@ -64,15 +64,16 @@ public class WhitespaceAroundCheck BAND, // '&' BAND_ASSIGN, // "&=" LAND, // "&&" - LITERAL_if, - LITERAL_else, - LITERAL_for, - LITERAL_do, - LITERAL_return, - LITERAL_try, LITERAL_catch, + LITERAL_do, + LITERAL_else, LITERAL_finally, + LITERAL_for, + LITERAL_if, + LITERAL_return, LITERAL_synchronized, + LITERAL_try, + LITERAL_while, ASSERT // TODO: why is it not LITERAL_assert? // maybe it's a bug in the grammar? }; diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/java14_new.g b/src/checkstyle/com/puppycrawl/tools/checkstyle/java14_new.g index 3ede2f7a4..b787bb826 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/java14_new.g +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/java14_new.g @@ -49,7 +49,7 @@ statement // assert statement, available since JDK 1.4 assertStatement - : ASSERT^ expression ( COLON! expression )? SEMI! + : ASSERT^ expression ( COLON expression )? SEMI! ; class Java14Lexer extends JavaLexer; diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/java_new.g b/src/checkstyle/com/puppycrawl/tools/checkstyle/java_new.g index 2bce61116..11ae85723 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/java_new.g +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/java_new.g @@ -655,7 +655,7 @@ assignmentExpression // conditional test (level 12) conditionalExpression : logicalOrExpression - ( QUESTION^ assignmentExpression COLON! conditionalExpression )? + ( QUESTION^ assignmentExpression COLON conditionalExpression )? ; diff --git a/src/tests/com/puppycrawl/tools/checkstyle/AvoidStarImportTest.java b/src/tests/com/puppycrawl/tools/checkstyle/AvoidStarImportTest.java index af428cb9a..74686eff9 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/AvoidStarImportTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/AvoidStarImportTest.java @@ -18,9 +18,9 @@ extends BaseCheckTestCase final Checker c = createChecker(checkConfig); final String fname = getPath("InputImport.java"); final String[] expected = { - "7:1: Avoid using the '.*' form of import.", - "9:1: Avoid using the '.*' form of import.", - "10:1: Avoid using the '.*' form of import.", + "7: Avoid using the '.*' form of import.", + "9: Avoid using the '.*' form of import.", + "10: Avoid using the '.*' form of import.", }; verify(c, fname, expected); } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java b/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java index 2975781be..ecab91ac5 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/CheckerTest.java @@ -119,27 +119,12 @@ public class CheckerTest filepath + ":5:12: '.' is preceeded with whitespace.", filepath + ":5:14: '.' is followed by whitespace.", filepath + ":13: Type Javadoc comment is missing an @author tag.", - filepath + ":16:22: '=' is not preceeded with whitespace.", - filepath + ":16:23: '=' is not followed by whitespace.", - filepath + ":18:24: '=' is not followed by whitespace.", - filepath + ":26:14: '=' is not preceeded with whitespace.", - filepath + ":27:10: '=' is not preceeded with whitespace.", - filepath + ":27:11: '=' is not followed by whitespace.", - filepath + ":28:10: '+=' is not preceeded with whitespace.", - filepath + ":28:12: '+=' is not followed by whitespace.", - filepath + ":29:13: '-=' is not followed by whitespace.", filepath + ":29:14: '-' is followed by whitespace.", filepath + ":29:21: '+' is followed by whitespace.", filepath + ":30:14: '++' is preceeded with whitespace.", filepath + ":30:21: '--' is preceeded with whitespace.", filepath + ":31:15: '++' is followed by whitespace.", filepath + ":31:22: '--' is followed by whitespace.", - filepath + ":37:21: 'synchronized' is not followed by whitespace.", - filepath + ":39:12: 'try' is not followed by whitespace.", - filepath + ":39:12: '{' is not preceeded with whitespace.", - filepath + ":41:14: 'catch' is not followed by whitespace.", - filepath + ":41:34: '{' is not preceeded with whitespace.", - filepath + ":58:11: 'if' is not followed by whitespace.", filepath + ":58:12: '(' is followed by whitespace.", filepath + ":58:36: ')' is preceeded with whitespace.", filepath + ":59:9: '{' should be on the previous line.", @@ -147,34 +132,14 @@ public class CheckerTest filepath + ":74:13: '(' is followed by whitespace.", filepath + ":74:18: ')' is preceeded with whitespace.", filepath + ":75:9: '{' should be on the previous line.", - filepath + ":76:19: 'return' is not followed by whitespace.", filepath + ":79:9: '{' should be on the previous line.", filepath + ":88:21: 'cast' is not followed by whitespace.", - filepath + ":97:29: '?' is not preceeded with whitespace.", - filepath + ":97:30: '?' is not followed by whitespace.", - filepath + ":97:34: ':' is not preceeded with whitespace.", - filepath + ":97:35: ':' is not followed by whitespace.", - filepath + ":98:15: '==' is not preceeded with whitespace.", - filepath + ":98:17: '==' is not followed by whitespace.", - filepath + ":104:20: '*' is not followed by whitespace.", - filepath + ":104:21: '*' is not preceeded with whitespace.", filepath + ":111:22: '!' is followed by whitespace.", filepath + ":112:23: '~' is followed by whitespace.", - filepath + ":119:18: '%' is not preceeded with whitespace.", - filepath + ":120:20: '%' is not followed by whitespace.", - filepath + ":121:18: '%' is not preceeded with whitespace.", - filepath + ":121:19: '%' is not followed by whitespace.", - filepath + ":123:18: '/' is not preceeded with whitespace.", - filepath + ":124:20: '/' is not followed by whitespace.", - filepath + ":125:18: '/' is not preceeded with whitespace.", - filepath + ":125:19: '/' is not followed by whitespace.", filepath + ":129:17: '.' is preceeded with whitespace.", filepath + ":129:24: '.' is followed by whitespace.", filepath + ":136:10: '.' is preceeded with whitespace.", filepath + ":136:12: '.' is followed by whitespace.", - filepath + ":153:15: 'assert' is not followed by whitespace.", - filepath + ":156:20: ':' is not preceeded with whitespace.", - filepath + ":156:21: ':' is not followed by whitespace.", }; verify(c, filepath, expected); c.destroy(); @@ -195,15 +160,6 @@ public class CheckerTest filepath + ":5:12: '.' is preceeded with whitespace.", filepath + ":5:14: '.' is followed by whitespace.", filepath + ":13: Type Javadoc comment is missing an @author tag.", - filepath + ":16:22: '=' is not preceeded with whitespace.", - filepath + ":16:23: '=' is not followed by whitespace.", - filepath + ":18:24: '=' is not followed by whitespace.", - filepath + ":26:14: '=' is not preceeded with whitespace.", - filepath + ":27:10: '=' is not preceeded with whitespace.", - filepath + ":27:11: '=' is not followed by whitespace.", - filepath + ":28:10: '+=' is not preceeded with whitespace.", - filepath + ":28:12: '+=' is not followed by whitespace.", - filepath + ":29:13: '-=' is not followed by whitespace.", filepath + ":29:14: '-' is followed by whitespace.", filepath + ":29:20: '(' is not followed by whitespace.", filepath + ":29:21: '+' is followed by whitespace.", @@ -212,20 +168,13 @@ public class CheckerTest filepath + ":30:21: '--' is preceeded with whitespace.", filepath + ":31:15: '++' is followed by whitespace.", filepath + ":31:22: '--' is followed by whitespace.", - filepath + ":37:21: 'synchronized' is not followed by whitespace.", filepath + ":37:22: '(' is not followed by whitespace.", filepath + ":37:25: ')' is not preceeded with whitespace.", - filepath + ":39:12: 'try' is not followed by whitespace.", - filepath + ":39:12: '{' is not preceeded with whitespace.", - filepath + ":41:14: 'catch' is not followed by whitespace.", filepath + ":41:15: '(' is not followed by whitespace.", filepath + ":41:32: ')' is not preceeded with whitespace.", - filepath + ":41:34: '{' is not preceeded with whitespace.", - filepath + ":58:11: 'if' is not followed by whitespace.", filepath + ":59:9: '{' should be on the previous line.", filepath + ":63:9: '{' should be on the previous line.", filepath + ":75:9: '{' should be on the previous line.", - filepath + ":76:19: 'return' is not followed by whitespace.", filepath + ":76:20: '(' is not followed by whitespace.", filepath + ":76:20: ')' is not preceeded with whitespace.", filepath + ":79:9: '{' should be on the previous line.", @@ -239,37 +188,18 @@ public class CheckerTest filepath + ":90:19: ')' is not preceeded with whitespace.", filepath + ":97:22: '(' is not followed by whitespace.", filepath + ":97:27: ')' is not preceeded with whitespace.", - filepath + ":97:29: '?' is not preceeded with whitespace.", - filepath + ":97:30: '?' is not followed by whitespace.", - filepath + ":97:34: ':' is not preceeded with whitespace.", - filepath + ":97:35: ':' is not followed by whitespace.", filepath + ":98:14: '(' is not followed by whitespace.", - filepath + ":98:15: '==' is not preceeded with whitespace.", - filepath + ":98:17: '==' is not followed by whitespace.", filepath + ":98:17: ')' is not preceeded with whitespace.", - filepath + ":104:20: '*' is not followed by whitespace.", - filepath + ":104:21: '*' is not preceeded with whitespace.", filepath + ":111:22: '!' is followed by whitespace.", filepath + ":112:23: '~' is followed by whitespace.", - filepath + ":119:18: '%' is not preceeded with whitespace.", - filepath + ":120:20: '%' is not followed by whitespace.", - filepath + ":121:18: '%' is not preceeded with whitespace.", - filepath + ":121:19: '%' is not followed by whitespace.", - filepath + ":123:18: '/' is not preceeded with whitespace.", - filepath + ":124:20: '/' is not followed by whitespace.", - filepath + ":125:18: '/' is not preceeded with whitespace.", - filepath + ":125:19: '/' is not followed by whitespace.", filepath + ":129:17: '.' is preceeded with whitespace.", filepath + ":129:24: '.' is followed by whitespace.", filepath + ":136:10: '.' is preceeded with whitespace.", filepath + ":136:12: '.' is followed by whitespace.", filepath + ":150:28: '(' is not followed by whitespace.", filepath + ":150:31: ')' is not preceeded with whitespace.", - filepath + ":153:15: 'assert' is not followed by whitespace.", filepath + ":153:16: '(' is not followed by whitespace.", filepath + ":153:19: ')' is not preceeded with whitespace.", - filepath + ":156:20: ':' is not preceeded with whitespace.", - filepath + ":156:21: ':' is not followed by whitespace.", }; verify(c, filepath, expected); } @@ -302,12 +232,10 @@ public class CheckerTest final String[] expected = { filepath + ":29: 'do' construct must use '{}'s.", filepath + ":41: 'while' construct must use '{}'s.", - filepath + ":41:14: 'while' is not followed by whitespace.", filepath + ":42: 'while' construct must use '{}'s.", filepath + ":44: 'while' construct must use '{}'s.", filepath + ":45: 'if' construct must use '{}'s.", filepath + ":58: 'for' construct must use '{}'s.", - filepath + ":58:12: 'for' is not followed by whitespace.", filepath + ":58:23: ';' is not followed by whitespace.", filepath + ":58:29: ';' is not followed by whitespace.", filepath + ":59: 'for' construct must use '{}'s.", @@ -332,8 +260,6 @@ public class CheckerTest final Checker c = createChecker(); final String filepath = getPath("InputBraces.java"); final String[] expected = { - filepath + ":41:14: 'while' is not followed by whitespace.", - filepath + ":58:12: 'for' is not followed by whitespace.", filepath + ":58:23: ';' is not followed by whitespace.", filepath + ":58:29: ';' is not followed by whitespace.", }; @@ -497,12 +423,6 @@ public class CheckerTest filepath + ":132:20: Name 'InnerBlockVariable' must match pattern '^[a-z][a-zA-Z0-9]*$'.", filepath + ":142:30: Name 'BAD__NAME' must match pattern '^[A-Z](_?[A-Z0-9]+)*$'.", filepath + ":145: Line is longer than 80 characters.", - filepath + ":153:27: '=' is not followed by whitespace.", - filepath + ":154:27: '=' is not followed by whitespace.", - filepath + ":155:27: '=' is not followed by whitespace.", - filepath + ":156:27: '=' is not followed by whitespace.", - filepath + ":157:27: '=' is not followed by whitespace.", - filepath + ":158:27: '=' is not followed by whitespace.", filepath + ":161: Comment matches to-do format 'FIXME:'.", filepath + ":162: Comment matches to-do format 'FIXME:'.", filepath + ":163: Comment matches to-do format 'FIXME:'.", diff --git a/src/tests/com/puppycrawl/tools/checkstyle/FileLengthCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/FileLengthCheckTest.java index b2cd957f0..ebba80cff 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/FileLengthCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/FileLengthCheckTest.java @@ -23,7 +23,7 @@ public class FileLengthCheckTest public void testAlarm() throws Exception { final String[] expected = { - "1:1: File length is 198 lines (max allowed is 20)." + "1: File length is 198 lines (max allowed is 20)." }; runIt("20", expected); } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/HeaderCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/HeaderCheckTest.java index 9f65f7059..3c68b70a5 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/HeaderCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/HeaderCheckTest.java @@ -19,7 +19,7 @@ public class HeaderCheckTest extends BaseCheckTestCase final Checker c = createChecker(checkConfig); final String fname = getPath("inputHeader.java"); final String[] expected = { - "1:1: Missing a header - not enough lines in file." + "1: Missing a header - not enough lines in file." }; verify(c, fname, expected); } @@ -34,7 +34,7 @@ public class HeaderCheckTest extends BaseCheckTestCase final Checker c = createChecker(checkConfig); final String fname = getPath("InputScopeAnonInner.java"); final String[] expected = { - "3:1: Line does not match expected header line of '// Created: 2002'." + "3: Line does not match expected header line of '// Created: 2002'." }; verify(c, fname, expected); } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java b/src/tests/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java index 01e82b8f7..47815a0fa 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/TreeWalkerTest.java @@ -21,7 +21,7 @@ public class TreeWalkerTest public void testCreate() { - new TreeWalker(new LocalizedMessages(0)); + new TreeWalker(new LocalizedMessages(0), 8); assertTrue(true); } } diff --git a/src/tests/com/puppycrawl/tools/checkstyle/WhitespaceAroundTest.java b/src/tests/com/puppycrawl/tools/checkstyle/WhitespaceAroundTest.java index 05d946449..9e56174b9 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/WhitespaceAroundTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/WhitespaceAroundTest.java @@ -3,7 +3,7 @@ package com.puppycrawl.tools.checkstyle; import com.puppycrawl.tools.checkstyle.checks.WhitespaceAroundCheck; public class WhitespaceAroundTest - extends BaseCheckTestCase + extends BaseCheckTestCase { public WhitespaceAroundTest(String aName) { @@ -29,11 +29,15 @@ public class WhitespaceAroundTest "29:13: '-=' is not followed by whitespace.", "37:21: 'synchronized' is not followed by whitespace.", "39:12: 'try' is not followed by whitespace.", + //"39:12: '{' is not preceeded with whitespace.", "41:14: 'catch' is not followed by whitespace.", + //filepath + ":41:34: '{' is not preceeded with whitespace.", "58:11: 'if' is not followed by whitespace.", "76:19: 'return' is not followed by whitespace.", "97:29: '?' is not preceeded with whitespace.", "97:30: '?' is not followed by whitespace.", + "97:34: ':' is not preceeded with whitespace.", + "97:35: ':' is not followed by whitespace.", "98:15: '==' is not preceeded with whitespace.", "98:17: '==' is not followed by whitespace.", "104:20: '*' is not followed by whitespace.", @@ -47,6 +51,42 @@ public class WhitespaceAroundTest "125:18: '/' is not preceeded with whitespace.", "125:19: '/' is not followed by whitespace.", "153:15: 'assert' is not followed by whitespace.", + "156:20: ':' is not preceeded with whitespace.", + "156:21: ':' is not followed by whitespace.", + }; + verify(c, fname, expected); + } + + public void testIt2() + throws Exception + { + final CheckConfiguration checkConfig = new CheckConfiguration(); + checkConfig.setClassname(WhitespaceAroundCheck.class.getName()); + final Checker c = createChecker(checkConfig); + final String fname = getPath("InputSimple.java"); + final String[] expected = { + "153:27: '=' is not followed by whitespace.", + "154:27: '=' is not followed by whitespace.", + "155:27: '=' is not followed by whitespace.", + "156:27: '=' is not followed by whitespace.", + "157:27: '=' is not followed by whitespace.", + "158:27: '=' is not followed by whitespace.", + }; + verify(c, fname, expected); + } + + public void testIt3() + throws Exception + { + final CheckConfiguration checkConfig = new CheckConfiguration(); + checkConfig.setClassname(WhitespaceAroundCheck.class.getName()); + final Checker c = createChecker(checkConfig); + final String fname = getPath("InputBraces.java"); + final String[] expected = { + "41:14: 'while' is not followed by whitespace.", + "58:12: 'for' is not followed by whitespace.", + // + ":58:23: ';' is not followed by whitespace.", + // + ":58:29: ';' is not followed by whitespace.", }; verify(c, fname, expected); }