From 085ce12db0983590844ccc24ea49f91686a30ed8 Mon Sep 17 00:00:00 2001 From: Ruslan Diachenko Date: Wed, 26 Aug 2015 00:00:09 +0100 Subject: [PATCH] Issue #1566: MultipleStringLiterals violations fixed --- config/checkstyle_checks.xml | 2 +- config/suppressions.xml | 3 +++ .../tools/checkstyle/ConfigurationLoader.java | 19 +++++++++------- .../tools/checkstyle/TreeWalker.java | 12 +++++----- .../checkstyle/ant/CheckstyleAntTask.java | 9 +++++--- .../tools/checkstyle/api/AutomaticBean.java | 19 ++++++++-------- .../tools/checkstyle/api/Comment.java | 5 +++-- .../checks/AbstractOptionCheck.java | 4 ++++ .../checkstyle/checks/ClassResolver.java | 16 +++++++++----- .../checks/blocks/LeftCurlyCheck.java | 17 ++++++++------ .../checks/imports/AvoidStarImportCheck.java | 10 +++++---- .../checks/imports/UnusedImportsCheck.java | 7 ++++-- .../checks/javadoc/AtclauseOrderCheck.java | 6 +++-- .../checks/javadoc/JavadocTypeCheck.java | 20 ++++++++++++----- .../checks/javadoc/SummaryJavadocCheck.java | 10 ++++++--- .../whitespace/AbstractParenPadCheck.java | 18 ++++++++++----- .../EmptyForInitializerPadCheck.java | 4 ++-- .../whitespace/EmptyForIteratorPadCheck.java | 4 ++-- .../whitespace/GenericWhitespaceCheck.java | 22 ++++++++++++------- .../filters/SuppressionsLoader.java | 10 +++++---- 20 files changed, 137 insertions(+), 80 deletions(-) diff --git a/config/checkstyle_checks.xml b/config/checkstyle_checks.xml index eeb5ab984..095c20e2d 100644 --- a/config/checkstyle_checks.xml +++ b/config/checkstyle_checks.xml @@ -319,6 +319,7 @@ + + + + diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java b/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java index 55691c717..714074f6c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java @@ -96,6 +96,9 @@ public final class ConfigurationLoader { private static final String UNABLE_TO_PARSE_EXCEPTION_PREFIX = "unable to parse" + " configuration stream"; + /** Dollar sign literal. */ + private static final char DOLLAR_SIGN = '$'; + /** The SAX document handler */ private final InternalLoader saxHandler; @@ -261,9 +264,9 @@ public final class ConfigurationLoader { return loader.configuration; } catch (final SAXParseException e) { - throw new CheckstyleException(UNABLE_TO_PARSE_EXCEPTION_PREFIX - + " - " + e.getMessage() + ":" + e.getLineNumber() - + ":" + e.getColumnNumber(), e); + final String message = String.format("%s - %s:%s:%s", UNABLE_TO_PARSE_EXCEPTION_PREFIX, + e.getMessage(), e.getLineNumber(), e.getColumnNumber()); + throw new CheckstyleException(message, e); } catch (final ParserConfigurationException | IOException | SAXException e) { throw new CheckstyleException(UNABLE_TO_PARSE_EXCEPTION_PREFIX, e); @@ -352,7 +355,7 @@ public final class ConfigurationLoader { throws CheckstyleException { int prev = 0; //search for the next instance of $ from the 'prev' position - int pos = value.indexOf('$', prev); + int pos = value.indexOf(DOLLAR_SIGN, prev); while (pos >= 0) { //if there was any text before this, add it as a fragment @@ -362,13 +365,13 @@ public final class ConfigurationLoader { //if we are at the end of the string, we tack on a $ //then move past it if (pos == value.length() - 1) { - fragments.add("$"); + fragments.add(String.valueOf(DOLLAR_SIGN)); prev = pos + 1; } else if (value.charAt(pos + 1) != '{') { - if (value.charAt(pos + 1) == '$') { + if (value.charAt(pos + 1) == DOLLAR_SIGN) { //backwards compatibility two $ map to one mode - fragments.add("$"); + fragments.add(String.valueOf(DOLLAR_SIGN)); prev = pos + 2; } else { @@ -392,7 +395,7 @@ public final class ConfigurationLoader { } //search for the next instance of $ from the 'prev' position - pos = value.indexOf('$', prev); + pos = value.indexOf(DOLLAR_SIGN, prev); } //no more $ signs found //if there is any tail to the file, append it diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/TreeWalker.java b/src/main/java/com/puppycrawl/tools/checkstyle/TreeWalker.java index 708710119..b3da34413 100755 --- a/src/main/java/com/puppycrawl/tools/checkstyle/TreeWalker.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/TreeWalker.java @@ -265,9 +265,10 @@ public final class TreeWalker registerCheck(token, check); } else { - throw new CheckstyleException("Token \"" - + token + "\" was not found in Acceptable tokens list" - + " in check " + check.getClass().getName()); + final String message = String.format("Token \"%s\" was not found in " + + "Acceptable tokens list in check %s", + token, check.getClass().getName()); + throw new CheckstyleException(message); } } } @@ -293,8 +294,9 @@ public final class TreeWalker Arrays.sort(defaultTokens); for (final int token : check.getRequiredTokens()) { if (Arrays.binarySearch(defaultTokens, token) < 0) { - throw new CheckstyleException("Token \"" + token + "\" from required tokens was" - + " not found in default tokens list in check " + check); + final String message = String.format("Token \"%s\" from required tokens was" + + " not found in default tokens list in check %s", token, check); + throw new CheckstyleException(message); } } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/ant/CheckstyleAntTask.java b/src/main/java/com/puppycrawl/tools/checkstyle/ant/CheckstyleAntTask.java index 37776e226..30df0d8a8 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/ant/CheckstyleAntTask.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/ant/CheckstyleAntTask.java @@ -65,6 +65,9 @@ public class CheckstyleAntTask extends Task { /** Poor man's enum for an plain formatter */ private static final String E_PLAIN = "plain"; + /** Suffix for time string. */ + private static final String TIME_SUFFIX = " ms."; + /** Class path to locate class files */ private Path classpath; @@ -252,7 +255,7 @@ public class CheckstyleAntTask extends Task { } finally { final long endTime = System.currentTimeMillis(); - log("Total execution took " + (endTime - startTime) + " ms.", + log("Total execution took " + (endTime - startTime) + TIME_SUFFIX, Project.MSG_VERBOSE); } } @@ -295,7 +298,7 @@ public class CheckstyleAntTask extends Task { long startTime = System.currentTimeMillis(); final List files = scanFileSets(); long endTime = System.currentTimeMillis(); - log("To locate the files took " + (endTime - startTime) + " ms.", + log("To locate the files took " + (endTime - startTime) + TIME_SUFFIX, Project.MSG_VERBOSE); log("Running Checkstyle " + version + " on " + files.size() @@ -305,7 +308,7 @@ public class CheckstyleAntTask extends Task { startTime = System.currentTimeMillis(); final int numErrs = checker.process(files); endTime = System.currentTimeMillis(); - log("To process the files took " + (endTime - startTime) + " ms.", + log("To process the files took " + (endTime - startTime) + TIME_SUFFIX, Project.MSG_VERBOSE); final int numWarnings = warningCounter.getCount(); final boolean ok = numErrs <= maxErrors diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/AutomaticBean.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/AutomaticBean.java index 5f8e511d2..6e8345948 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/AutomaticBean.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/AutomaticBean.java @@ -159,10 +159,9 @@ public class AutomaticBean final PropertyDescriptor pd = PropertyUtils.getPropertyDescriptor(this, key); if (pd == null) { - throw new CheckstyleException( - "Property '" + key + "' in module " - + moduleName - + " does not exist, please check the documentation"); + final String message = String.format("Property '%s' in module %s does not " + + "exist, please check the documentation", key, moduleName); + throw new CheckstyleException(message); } } // finally we can set the bean property @@ -174,14 +173,14 @@ public class AutomaticBean // as we do PropertyUtils.getPropertyDescriptor before beanUtils.copyProperty // so we have to join these exceptions with InvocationTargetException // to satisfy UTs coverage - throw new CheckstyleException( - "Cannot set property '" + key + "' to '" + value - + "' in module " + moduleName, e); + final String message = String.format("Cannot set property '%s' to '%s' in module %s", + key, value, moduleName); + throw new CheckstyleException(message, e); } catch (final IllegalArgumentException | ConversionException e) { - throw new CheckstyleException( - "illegal value '" + value + "' for property '" + key - + "' of module " + moduleName, e); + final String message = String.format("illegal value '%s' for property '%s' of " + + "module %s", value, key, moduleName); + throw new CheckstyleException(message, e); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/Comment.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/Comment.java index 87e4678c5..62f84258b 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/Comment.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/Comment.java @@ -98,7 +98,8 @@ public class Comment implements TextBlock { @Override public String toString() { - return "Comment[" + startLineNo + ":" + startColNo + "-" - + endLineNo + ":" + endColNo + "]"; + final String separator = ":"; + return "Comment[" + startLineNo + separator + startColNo + "-" + + endLineNo + separator + endColNo + "]"; } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java index 120465a54..3de70cc1c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractOptionCheck.java @@ -37,6 +37,10 @@ import com.puppycrawl.tools.checkstyle.api.Check; */ public abstract class AbstractOptionCheck> extends Check { + + /** Semicolon literal. */ + protected static final String SEMICOLON = ";"; + /** Since I cannot get this by going T.class. */ private final Class optionClass; /** The policy to enforce */ diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java index f07629e24..1a10f282a 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java @@ -30,6 +30,12 @@ import java.util.Set; * @author Oliver Burn */ public class ClassResolver { + + /** Period literal. */ + private static final String PERIOD = "."; + /** Dollar sign literal. */ + private static final String DOLLAR_SIGN = "$"; + /** Name of the package to check if the class belongs to **/ private final String pkg; /** Set of imports to check against **/ @@ -77,7 +83,7 @@ public class ClassResolver { // when checking for "DataException", it will match on // "SecurityDataException". This has been the cause of a very // difficult bug to resolve! - if (imp.endsWith("." + name)) { + if (imp.endsWith(PERIOD + name)) { clazz = resolveQualifiedName(imp); if (clazz != null) { return clazz; @@ -88,7 +94,7 @@ public class ClassResolver { // See if in the package if (pkg != null && !pkg.isEmpty()) { - clazz = resolveQualifiedName(pkg + "." + name); + clazz = resolveQualifiedName(pkg + PERIOD + name); if (clazz != null) { return clazz; } @@ -121,10 +127,10 @@ public class ClassResolver { throws ClassNotFoundException { Class clazz = null; if (!currentClass.isEmpty()) { - String innerClass = currentClass + "$" + name; + String innerClass = currentClass + DOLLAR_SIGN + name; if (!pkg.isEmpty()) { - innerClass = pkg + "." + innerClass; + innerClass = pkg + PERIOD + innerClass; } if (isLoadable(innerClass)) { @@ -198,7 +204,7 @@ public class ClassResolver { final int dot = name.lastIndexOf('.'); if (dot != -1) { final String innerName = - name.substring(0, dot) + "$" + name.substring(dot + 1); + name.substring(0, dot) + DOLLAR_SIGN + name.substring(dot + 1); if (isLoadable(innerName)) { classObj = safeLoad(innerName); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java index 4a9392e3b..32b5dc6e3 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/LeftCurlyCheck.java @@ -95,7 +95,10 @@ public class LeftCurlyCheck */ public static final String MSG_KEY_LINE_BREAK_AFTER = "line.break.after"; - /** If true, Check will ignore enums*/ + /** Open curly brace literal. */ + private static final String OPEN_CURLY_BRACE = "{"; + + /** If true, Check will ignore enums. */ private boolean ignoreEnums = true; /** @@ -289,7 +292,7 @@ public class LeftCurlyCheck || braceLine.charAt(brace.getColumnNo() + 1) != '}') { if (getAbstractOption() == LeftCurlyOption.NL) { if (!Utils.whitespaceBefore(brace.getColumnNo(), braceLine)) { - log(brace, MSG_KEY_LINE_NEW, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_NEW, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } } else if (getAbstractOption() == LeftCurlyOption.EOL) { @@ -311,10 +314,10 @@ public class LeftCurlyCheck */ private void validateEol(DetailAST brace, String braceLine) { if (Utils.whitespaceBefore(brace.getColumnNo(), braceLine)) { - log(brace, MSG_KEY_LINE_PREVIOUS, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_PREVIOUS, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } if (!hasLineBreakAfter(brace)) { - log(brace, MSG_KEY_LINE_BREAK_AFTER, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_BREAK_AFTER, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } } @@ -329,14 +332,14 @@ public class LeftCurlyCheck // not on the same line if (startToken.getLineNo() + 1 == brace.getLineNo()) { if (Utils.whitespaceBefore(brace.getColumnNo(), braceLine)) { - log(brace, MSG_KEY_LINE_PREVIOUS, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_PREVIOUS, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } else { - log(brace, MSG_KEY_LINE_NEW, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_NEW, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } } else if (!Utils.whitespaceBefore(brace.getColumnNo(), braceLine)) { - log(brace, MSG_KEY_LINE_NEW, "{", brace.getColumnNo() + 1); + log(brace, MSG_KEY_LINE_NEW, OPEN_CURLY_BRACE, brace.getColumnNo() + 1); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/AvoidStarImportCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/AvoidStarImportCheck.java index f1600f068..ac4377c38 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/AvoidStarImportCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/AvoidStarImportCheck.java @@ -72,6 +72,9 @@ public class AvoidStarImportCheck */ public static final String MSG_KEY = "import.avoidStar"; + /** Suffix for the star import. */ + private static final String STAR_IMPORT_SUFFIX = ".*"; + /** The packages/classes to exempt from this check. */ private final List excludes = Lists.newArrayList(); @@ -113,14 +116,13 @@ public class AvoidStarImportCheck */ public void setExcludes(String... excludesParam) { excludes.clear(); - final String suffix = ".*"; for (final String exclude : excludesParam) { - if (exclude.endsWith(suffix)) { + if (exclude.endsWith(STAR_IMPORT_SUFFIX)) { excludes.add(exclude); } else { - excludes.add(exclude + suffix); + excludes.add(exclude + STAR_IMPORT_SUFFIX); } } } @@ -163,7 +165,7 @@ public class AvoidStarImportCheck private void logsStarredImportViolation(DetailAST startingDot) { final FullIdent name = FullIdent.createFullIdent(startingDot); final String importText = name.getText(); - if (importText.endsWith(".*") && !excludes.contains(importText)) { + if (importText.endsWith(STAR_IMPORT_SUFFIX) && !excludes.contains(importText)) { log(startingDot.getLineNo(), MSG_KEY, importText); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/UnusedImportsCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/UnusedImportsCheck.java index 3c39c0d9e..c6ba44962 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/UnusedImportsCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/UnusedImportsCheck.java @@ -69,6 +69,9 @@ public class UnusedImportsCheck extends Check { private static final Pattern ARGUMENT_NAME = Pattern.compile( "[(,]\\s*" + CLASS_NAME.pattern()); + /** Suffix for the star import. */ + private static final String STAR_IMPORT_SUFFIX = ".*"; + /** Flag to indicate when time to start collecting references. */ private boolean collect; /** Flag whether to process Javdoc comments. */ @@ -195,7 +198,7 @@ public class UnusedImportsCheck extends Check { */ private void processImport(DetailAST ast) { final FullIdent name = FullIdent.createFullIdentBelow(ast); - if (!name.getText().endsWith(".*")) { + if (!name.getText().endsWith(STAR_IMPORT_SUFFIX)) { imports.add(name); } } @@ -208,7 +211,7 @@ public class UnusedImportsCheck extends Check { final FullIdent name = FullIdent.createFullIdent( ast.getFirstChild().getNextSibling()); - if (!name.getText().endsWith(".*")) { + if (!name.getText().endsWith(STAR_IMPORT_SUFFIX)) { imports.add(name); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AtclauseOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AtclauseOrderCheck.java index d686440cf..a2bc6982b 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AtclauseOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/AtclauseOrderCheck.java @@ -69,6 +69,8 @@ public class AtclauseOrderCheck extends AbstractJavadocCheck { */ public static final String MSG_KEY = "at.clause.order"; + /** Comma literal. */ + private static final String COMMA_SEPARATOR = ","; /** * Default order of atclauses. */ @@ -104,7 +106,7 @@ public class AtclauseOrderCheck extends AbstractJavadocCheck { */ public void setTarget(String target) { final List customTarget = new ArrayList<>(); - final String[] sTarget = target.split(","); + final String[] sTarget = target.split(COMMA_SEPARATOR); for (String aSTarget : sTarget) { customTarget.add(Utils.getTokenId(aSTarget.trim())); } @@ -117,7 +119,7 @@ public class AtclauseOrderCheck extends AbstractJavadocCheck { */ public void setTagOrder(String order) { final List customOrder = new ArrayList<>(); - final String[] sOrder = order.split(","); + final String[] sOrder = order.split(COMMA_SEPARATOR); for (String aSOrder : sOrder) { customOrder.add(aSOrder.trim()); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java index 829b8e376..7d4e03447 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocTypeCheck.java @@ -82,6 +82,12 @@ public class JavadocTypeCheck */ public static final String UNUSED_TAG_GENERAL = "javadoc.unusedTagGeneral"; + /** Open angle bracket literal. */ + private static final String OPEN_ANGLE_BRACKET = "<"; + + /** Close angle bracket literal. */ + private static final String CLOSE_ANGLE_BRACKET = ">"; + /** The scope to check for */ private Scope scope = Scope.PRIVATE; /** The visibility scope where Javadoc comments shouldn't be checked **/ @@ -267,17 +273,18 @@ public class JavadocTypeCheck } int tagCount = 0; + final String tagPrefix = "@"; for (int i = tags.size() - 1; i >= 0; i--) { final JavadocTag tag = tags.get(i); if (tag.getTagName().equals(tagName)) { tagCount++; if (!formatPattern.matcher(tag.getFirstArg()).find()) { - log(lineNo, TAG_FORMAT, "@" + tagName, format); + log(lineNo, TAG_FORMAT, tagPrefix + tagName, format); } } } if (tagCount == 0) { - log(lineNo, MISSING_TAG, "@" + tagName); + log(lineNo, MISSING_TAG, tagPrefix + tagName); } } @@ -294,13 +301,14 @@ public class JavadocTypeCheck for (int i = tags.size() - 1; i >= 0; i--) { final JavadocTag tag = tags.get(i); if (tag.isParamTag() - && tag.getFirstArg().indexOf("<" + typeParamName + ">") == 0) { + && tag.getFirstArg().indexOf(OPEN_ANGLE_BRACKET + + typeParamName + CLOSE_ANGLE_BRACKET) == 0) { found = true; } } if (!found) { - log(lineNo, MISSING_TAG, - JavadocTagInfo.PARAM.getText() + " <" + typeParamName + ">"); + log(lineNo, MISSING_TAG, JavadocTagInfo.PARAM.getText() + + " " + OPEN_ANGLE_BRACKET + typeParamName + CLOSE_ANGLE_BRACKET); } } @@ -324,7 +332,7 @@ public class JavadocTypeCheck log(tag.getLineNo(), tag.getColumnNo(), UNUSED_TAG, JavadocTagInfo.PARAM.getText(), - "<" + typeParamName + ">"); + OPEN_ANGLE_BRACKET + typeParamName + CLOSE_ANGLE_BRACKET); } } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java index 47892d0b7..a986513a6 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/SummaryJavadocCheck.java @@ -73,6 +73,9 @@ public class SummaryJavadocCheck extends AbstractJavadocCheck { */ public static final String SUMMARY_JAVADOC = "summary.javaDoc"; + /** Period literal. */ + private static final String PERIOD = "."; + /** * Regular expression for forbidden summary fragments. */ @@ -81,7 +84,7 @@ public class SummaryJavadocCheck extends AbstractJavadocCheck { /** * Period symbol at the end of first javadoc sentence. */ - private String period = "."; + private String period = PERIOD; /** * Sets custom value of regular expression for forbidden summary fragments. @@ -138,9 +141,10 @@ public class SummaryJavadocCheck extends AbstractJavadocCheck { */ private static String getFirstSentence(DetailNode ast) { final StringBuilder result = new StringBuilder(); + final String periodSuffix = PERIOD + ' '; for (DetailNode child : ast.getChildren()) { if (child.getType() != JavadocTokenTypes.JAVADOC_INLINE_TAG - && child.getText().contains(". ")) { + && child.getText().contains(periodSuffix)) { result.append(getCharsTillDot(child)); break; } @@ -160,7 +164,7 @@ public class SummaryJavadocCheck extends AbstractJavadocCheck { final StringBuilder result = new StringBuilder(); for (DetailNode child : textNode.getChildren()) { result.append(child.getText()); - if (".".equals(child.getText()) + if (PERIOD.equals(child.getText()) && JavadocUtils.getNextSibling(child).getType() == JavadocTokenTypes.WS) { break; } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/AbstractParenPadCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/AbstractParenPadCheck.java index 0a5949a65..d198456f8 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/AbstractParenPadCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/AbstractParenPadCheck.java @@ -57,6 +57,12 @@ abstract class AbstractParenPadCheck */ public static final String WS_NOT_PRECEDED = "ws.notPreceded"; + /** Open parenthesis literal. */ + private static final char OPEN_PARENTHESIS = '('; + + /** Close parenthesis literal. */ + private static final char CLOSE_PARENTHESIS = ')'; + /** * Sets the paren pad option to nospace. */ @@ -74,12 +80,12 @@ abstract class AbstractParenPadCheck if (after < line.length()) { if (getAbstractOption() == PadOption.NOSPACE && Character.isWhitespace(line.charAt(after))) { - log(ast.getLineNo(), after, WS_FOLLOWED, "("); + log(ast.getLineNo(), after, WS_FOLLOWED, OPEN_PARENTHESIS); } else if (getAbstractOption() == PadOption.SPACE && !Character.isWhitespace(line.charAt(after)) - && line.charAt(after) != ')') { - log(ast.getLineNo(), after, WS_NOT_FOLLOWED, "("); + && line.charAt(after) != CLOSE_PARENTHESIS) { + log(ast.getLineNo(), after, WS_NOT_FOLLOWED, OPEN_PARENTHESIS); } } } @@ -95,13 +101,13 @@ abstract class AbstractParenPadCheck if (getAbstractOption() == PadOption.NOSPACE && Character.isWhitespace(line.charAt(before)) && !Utils.whitespaceBefore(before, line)) { - log(ast.getLineNo(), before, WS_PRECEDED, ")"); + log(ast.getLineNo(), before, WS_PRECEDED, CLOSE_PARENTHESIS); } else if (getAbstractOption() == PadOption.SPACE && !Character.isWhitespace(line.charAt(before)) - && line.charAt(before) != '(') { + && line.charAt(before) != OPEN_PARENTHESIS) { log(ast.getLineNo(), ast.getColumnNo(), - WS_NOT_PRECEDED, ")"); + WS_NOT_PRECEDED, CLOSE_PARENTHESIS); } } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForInitializerPadCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForInitializerPadCheck.java index 79d09dece..4074a1ce2 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForInitializerPadCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForInitializerPadCheck.java @@ -96,11 +96,11 @@ public class EmptyForInitializerPadCheck final PadOption option = getAbstractOption(); if (option == PadOption.NOSPACE && Character.isWhitespace(line.charAt(before))) { - log(semi.getLineNo(), before, MSG_PRECEDED, ";"); + log(semi.getLineNo(), before, MSG_PRECEDED, SEMICOLON); } else if (option == PadOption.SPACE && !Character.isWhitespace(line.charAt(before))) { - log(semi.getLineNo(), before, MSG_NOT_PRECEDED, ";"); + log(semi.getLineNo(), before, MSG_NOT_PRECEDED, SEMICOLON); } } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForIteratorPadCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForIteratorPadCheck.java index 9525e593a..175891a09 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForIteratorPadCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/EmptyForIteratorPadCheck.java @@ -94,11 +94,11 @@ public class EmptyForIteratorPadCheck if (after < line.length()) { if (getAbstractOption() == PadOption.NOSPACE && Character.isWhitespace(line.charAt(after))) { - log(semi.getLineNo(), after, WS_FOLLOWED, ";"); + log(semi.getLineNo(), after, WS_FOLLOWED, SEMICOLON); } else if (getAbstractOption() == PadOption.SPACE && !Character.isWhitespace(line.charAt(after))) { - log(semi.getLineNo(), after, WS_NOT_FOLLOWED, ";"); + log(semi.getLineNo(), after, WS_NOT_FOLLOWED, SEMICOLON); } } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java index 392c699c6..82ce9be06 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java @@ -93,6 +93,12 @@ public class GenericWhitespaceCheck extends Check { */ public static final String WS_ILLEGAL_FOLLOW = "ws.illegalFollow"; + /** Open angle bracket literal. */ + private static final String OPEN_ANGLE_BRACKET = "<"; + + /** Close angle bracket literal. */ + private static final String CLOSE_ANGLE_BRACKET = ">"; + /** Used to count the depth of a Generic expression. */ private int depth; @@ -145,7 +151,7 @@ public class GenericWhitespaceCheck extends Check { if (before >= 0 && Character.isWhitespace(line.charAt(before)) && !Utils.whitespaceBefore(before, line)) { - log(ast.getLineNo(), before, WS_PRECEDED, ">"); + log(ast.getLineNo(), before, WS_PRECEDED, CLOSE_ANGLE_BRACKET); } if (after < line.length()) { @@ -183,11 +189,11 @@ public class GenericWhitespaceCheck extends Check { log(ast.getLineNo(), after, WS_NOT_PRECEDED, "&"); } else if (indexOfAmp - after != 1) { - log(ast.getLineNo(), after, WS_FOLLOWED, ">"); + log(ast.getLineNo(), after, WS_FOLLOWED, CLOSE_ANGLE_BRACKET); } } else if (line.charAt(after) == ' ') { - log(ast.getLineNo(), after, WS_FOLLOWED, ">"); + log(ast.getLineNo(), after, WS_FOLLOWED, CLOSE_ANGLE_BRACKET); } } @@ -206,14 +212,14 @@ public class GenericWhitespaceCheck extends Check { // +--- whitespace not allowed if (isGenericBeforeMethod(ast)) { if (Character.isWhitespace(charAfter)) { - log(ast.getLineNo(), after, WS_FOLLOWED, ">"); + log(ast.getLineNo(), after, WS_FOLLOWED, CLOSE_ANGLE_BRACKET); } } else if (!Character.isWhitespace(charAfter) && charAfter != '(' && charAfter != ')' && charAfter != ',' && charAfter != '[' && charAfter != '.' && charAfter != ':') { - log(ast.getLineNo(), after, WS_ILLEGAL_FOLLOW, ">"); + log(ast.getLineNo(), after, WS_ILLEGAL_FOLLOW, CLOSE_ANGLE_BRACKET); } } @@ -263,19 +269,19 @@ public class GenericWhitespaceCheck extends Check { || grandparent.getType() == TokenTypes.METHOD_DEF)) { // Require whitespace if (!Character.isWhitespace(line.charAt(before))) { - log(ast.getLineNo(), before, WS_NOT_PRECEDED, "<"); + log(ast.getLineNo(), before, WS_NOT_PRECEDED, OPEN_ANGLE_BRACKET); } } // Whitespace not required else if (Character.isWhitespace(line.charAt(before)) && !Utils.whitespaceBefore(before, line)) { - log(ast.getLineNo(), before, WS_PRECEDED, "<"); + log(ast.getLineNo(), before, WS_PRECEDED, OPEN_ANGLE_BRACKET); } } if (after < line.length() && Character.isWhitespace(line.charAt(after))) { - log(ast.getLineNo(), after, WS_FOLLOWED, "<"); + log(ast.getLineNo(), after, WS_FOLLOWED, OPEN_ANGLE_BRACKET); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionsLoader.java b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionsLoader.java index aea6e2308..e6638193c 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionsLoader.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/filters/SuppressionsLoader.java @@ -178,15 +178,17 @@ public final class SuppressionsLoader throw new CheckstyleException(UNABLE_TO_FIND_ERROR_MESSAGE + sourceName, e); } catch (final ParserConfigurationException | SAXException e) { - throw new CheckstyleException("Unable to parse " - + sourceName + " - " + e.getMessage(), e); + final String message = String.format("Unable to parse %s - %s", + sourceName, e.getMessage()); + throw new CheckstyleException(message, e); } catch (final IOException e) { throw new CheckstyleException("Unable to read " + sourceName, e); } catch (final NumberFormatException e) { - throw new CheckstyleException("Number format exception " - + sourceName + " - " + e.getMessage(), e); + final String message = String.format("Number format exception %s - %s", + sourceName, e.getMessage()); + throw new CheckstyleException(message, e); } }