diff --git a/config/import-control.xml b/config/import-control.xml index 74bb0dad5..47e9a842e 100644 --- a/config/import-control.xml +++ b/config/import-control.xml @@ -17,6 +17,7 @@ + diff --git a/pom.xml b/pom.xml index bb52d7f4f..226433425 100644 --- a/pom.xml +++ b/pom.xml @@ -248,7 +248,7 @@ - + rulesets/java/strings.xml rulesets/java/typeresolution.xml rulesets/java/unnecessary.xml @@ -765,7 +765,7 @@ .*.checks.design.ThrowsCountCheck7583 .*.checks.design.VisibilityModifierCheck9595 - .*.checks.header.AbstractHeaderCheck7985 + .*.checks.header.AbstractHeaderCheck8585 .*.checks.header.HeaderCheck1845 .*.checks.header.RegexpHeaderCheck8793 @@ -775,7 +775,7 @@ .*.checks.imports.CustomImportOrderCheck9391 .*.checks.imports.Guard86100 .*.checks.imports.IllegalImportCheck10094 - .*.checks.imports.ImportControlCheck7570 + .*.checks.imports.ImportControlCheck8570 .*.checks.imports.ImportControlLoader7288 .*.checks.imports.ImportOrderCheck9199 .*.checks.imports.PkgControl80100 @@ -875,7 +875,7 @@ .*.checks.whitespace.MethodParamPadCheck10095 .*.checks.whitespace.NoWhitespaceAfterCheck9498 .*.checks.whitespace.NoWhitespaceBeforeCheck90100 - .*.checks.whitespace.OperatorWrapCheck6882 + .*.checks.whitespace.OperatorWrapCheck6881 .*.checks.whitespace.ParenPadCheck8695 .*.checks.whitespace.SeparatorWrapCheck10093 .*.checks.whitespace.TypecastParenPadCheck8788 diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java b/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java index 2e1eb0c01..26fde6630 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/ConfigurationLoader.java @@ -512,7 +512,7 @@ public final class ConfigurationLoader int prev = 0; int pos; //search for the next instance of $ from the 'prev' position - while ((pos = value.indexOf("$", prev)) >= 0) { + while ((pos = value.indexOf('$', prev)) >= 0) { //if there was any text before this, add it as a fragment //TODO, this check could be modified to go if pos>prev; diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java b/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java index 7ec8d006a..370f77b41 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/DefaultLogger.java @@ -113,8 +113,7 @@ public class DefaultLogger + BUFFER_CUSHION; final StringBuilder sb = new StringBuilder(bufLen); - sb.append(fileName); - sb.append(':').append(evt.getLine()); + sb.append(fileName).append(':').append(evt.getLine()); if (evt.getColumn() > 0) { sb.append(':').append(evt.getColumn()); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/PackageNamesLoader.java b/src/main/java/com/puppycrawl/tools/checkstyle/PackageNamesLoader.java index 3da3b6885..01ef813fa 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/PackageNamesLoader.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/PackageNamesLoader.java @@ -113,7 +113,7 @@ public final class PackageNamesLoader final String subPackage = iterator.next(); buf.append(subPackage); if (!subPackage.endsWith(".")) { - buf.append("."); + buf.append('.'); } } return buf.toString(); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/Utils.java b/src/main/java/com/puppycrawl/tools/checkstyle/Utils.java index ef1227113..125151e76 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/Utils.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/Utils.java @@ -179,7 +179,7 @@ public final class Utils */ public static String baseClassname(String type) { - final int i = type.lastIndexOf("."); + final int i = type.lastIndexOf('.'); return i == -1 ? type : type.substring(i + 1); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/XMLLogger.java b/src/main/java/com/puppycrawl/tools/checkstyle/XMLLogger.java index 78de51442..a63473e24 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/XMLLogger.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/XMLLogger.java @@ -187,7 +187,7 @@ public class XMLLogger sb.append("""); break; case '&': - final int nextSemi = value.indexOf(";", i); + final int nextSemi = value.indexOf(';', i); if (nextSemi < 0 || !isReference(value.substring(i, nextSemi + 1))) { diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/AnnotationUtility.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/AnnotationUtility.java index a1facccc7..3f8537490 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/AnnotationUtility.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/AnnotationUtility.java @@ -18,6 +18,7 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.api; +import org.apache.commons.lang3.StringUtils; /** * Contains utility methods designed to work with annotations. @@ -142,7 +143,7 @@ public final class AnnotationUtility throw new NullPointerException("the annotation is null"); } - if (annotation.trim().length() == 0) { + if (StringUtils.isBlank(annotation)) { throw new IllegalArgumentException("the annotation" + "is empty or spaces"); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/api/FullIdent.java b/src/main/java/com/puppycrawl/tools/checkstyle/api/FullIdent.java index 5863085af..8c01cf00e 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/api/FullIdent.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/api/FullIdent.java @@ -18,6 +18,11 @@ //////////////////////////////////////////////////////////////////////////////// package com.puppycrawl.tools.checkstyle.api; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + /** * Represents a full identifier, including dots, with associated * position information. @@ -35,8 +40,8 @@ package com.puppycrawl.tools.checkstyle.api; **/ public final class FullIdent { - /** the string **/ - private final StringBuffer buffer = new StringBuffer(); + /** the list holding subsequent elements of identifier **/ + private final List elements = new ArrayList<>(); /** the line number **/ private int lineNo; /** the column number **/ @@ -50,7 +55,7 @@ public final class FullIdent /** @return the text **/ public String getText() { - return buffer.toString(); + return StringUtils.join(elements, ""); } /** @return the line number **/ @@ -71,7 +76,7 @@ public final class FullIdent */ private void append(String text) { - buffer.append(text); + elements.add(text); } /** @@ -81,7 +86,7 @@ public final class FullIdent */ private void append(DetailAST ast) { - buffer.append(ast.getText()); + elements.add(ast.getText()); if (lineNo == 0) { lineNo = ast.getLineNo(); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractTypeAwareCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractTypeAwareCheck.java index 01015ebc9..d87754bb3 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractTypeAwareCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/AbstractTypeAwareCheck.java @@ -160,10 +160,10 @@ public abstract class AbstractTypeAwareCheck extends Check || ast.getType() == TokenTypes.ENUM_DEF) { // perhaps it was inner class - int dotIdx = currentClass.lastIndexOf("$"); + int dotIdx = currentClass.lastIndexOf('$'); if (dotIdx == -1) { // perhaps just a class - dotIdx = currentClass.lastIndexOf("."); + dotIdx = currentClass.lastIndexOf('.'); } if (dotIdx == -1) { // looks like a topmost class 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 3a56e66ce..ee1867f61 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/ClassResolver.java @@ -164,7 +164,7 @@ public class ClassResolver return safeLoad(name); } //Perhaps it's fully-qualified inner class - final int dot = name.lastIndexOf("."); + final int dot = name.lastIndexOf('.'); if (dot != -1) { final String innerName = name.substring(0, dot) + "$" + name.substring(dot + 1); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java index 0ce2fe524..d72133d46 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/SuppressWarningsHolder.java @@ -177,7 +177,7 @@ public class SuppressWarningsHolder public void setAliasList(String aliasList) { for (String sourceAlias : aliasList.split(",")) { - final int index = sourceAlias.indexOf("="); + final int index = sourceAlias.indexOf('='); if (index > 0) { registerAlias(sourceAlias.substring(0, index), sourceAlias .substring(index + 1)); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java index d986ed31a..3795b64b3 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/AnnotationUseStyleCheck.java @@ -319,7 +319,7 @@ public final class AnnotationUseStyleCheck extends Check && AnnotationUseStyleCheck.ANNOTATION_ELEMENT_SINGLE_NAME.equals( valuePair.getFirstChild().getText())) { - this.log(annotation.getLineNo(), "annotation.incorrect.style", + this.log(annotation.getLineNo(), MSG_KEY_ANNOTATION_INCORRECT_STYLE, ElementStyle.COMPACT); } } @@ -344,7 +344,7 @@ public final class AnnotationUseStyleCheck extends Check if (arrayInit != null && arrayInit.getChildCount(TokenTypes.EXPR) == 1) { - this.log(annotation.getLineNo(), "annotation.incorrect.style", + this.log(annotation.getLineNo(), MSG_KEY_ANNOTATION_INCORRECT_STYLE, ElementStyle.COMPACT_NO_ARRAY); } //in expanded style with one value and the correct element name @@ -358,7 +358,7 @@ public final class AnnotationUseStyleCheck extends Check valuePair.getFirstChild().getText()) && nestedArrayInit.getChildCount(TokenTypes.EXPR) == 1) { - this.log(annotation.getLineNo(), "annotation.incorrect.style", + this.log(annotation.getLineNo(), MSG_KEY_ANNOTATION_INCORRECT_STYLE, ElementStyle.COMPACT_NO_ARRAY); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/EmptyBlockCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/EmptyBlockCheck.java index f1e74eae9..053d6162a 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/EmptyBlockCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/EmptyBlockCheck.java @@ -22,6 +22,8 @@ import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.checks.AbstractOptionCheck; +import static org.apache.commons.lang3.StringUtils.isNotBlank; + /** * Checks for empty blocks. The policy to verify is specified using the {@link * BlockOption} class and defaults to {@link BlockOption#STMT}. @@ -175,7 +177,7 @@ public class EmptyBlockCheck // Handle braces on the same line final String txt = lines[slistLineNo - 1] .substring(slistColNo + 1, rcurlyColNo); - if (txt.trim().length() != 0) { + if (isNotBlank(txt)) { retVal = true; } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/AbstractIllegalCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/AbstractIllegalCheck.java index 419234c07..ea3868e49 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/AbstractIllegalCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/AbstractIllegalCheck.java @@ -65,10 +65,10 @@ public abstract class AbstractIllegalCheck extends Check illegalClassNames.clear(); for (final String name : classNames) { illegalClassNames.add(name); - final int lastDot = name.lastIndexOf("."); + final int lastDot = name.lastIndexOf('.'); if (lastDot > 0 && lastDot < name.length() - 1) { final String shortName = name - .substring(name.lastIndexOf(".") + 1); + .substring(name.lastIndexOf('.') + 1); illegalClassNames.add(shortName); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTypeCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTypeCheck.java index fe985a4a4..98a4d8ca5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTypeCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/IllegalTypeCheck.java @@ -312,7 +312,7 @@ public final class IllegalTypeCheck extends AbstractFormatCheck */ private boolean isMatchingClassName(String className) { - final String shortName = className.substring(className.lastIndexOf(".") + 1); + final String shortName = className.substring(className.lastIndexOf('.') + 1); return illegalClassNames.contains(className) || illegalClassNames.contains(shortName) || !legalAbstractClassNames.contains(className) @@ -329,7 +329,7 @@ public final class IllegalTypeCheck extends AbstractFormatCheck { if (illegalClassNames.contains(canonicalName)) { final String shortName = canonicalName. - substring(canonicalName.lastIndexOf(".") + 1); + substring(canonicalName.lastIndexOf('.') + 1); illegalClassNames.add(shortName); } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/design/VisibilityModifierCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/design/VisibilityModifierCheck.java index a8ef1b658..ce744b0bc 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/design/VisibilityModifierCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/design/VisibilityModifierCheck.java @@ -740,7 +740,7 @@ public class VisibilityModifierCheck final List shortNames = new ArrayList<>(); for (String canonicalClassName : canonicalClassNames) { final String shortClassName = canonicalClassName - .substring(canonicalClassName.lastIndexOf(".") + 1, + .substring(canonicalClassName.lastIndexOf('.') + 1, canonicalClassName.length()); shortNames.add(shortClassName); } @@ -755,7 +755,7 @@ public class VisibilityModifierCheck private static String getClassShortName(String canonicalClassName) { final String shortClassName = canonicalClassName - .substring(canonicalClassName.lastIndexOf(".") + 1, + .substring(canonicalClassName.lastIndexOf('.') + 1, canonicalClassName.length()); return shortClassName; } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java index 95de3738f..d979f0c13 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/header/AbstractHeaderCheck.java @@ -41,6 +41,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck; import com.puppycrawl.tools.checkstyle.api.CheckstyleException; +import org.apache.commons.lang3.StringUtils; /** * Abstract super class for header checks. @@ -89,7 +90,7 @@ public abstract class AbstractHeaderCheck extends AbstractFileSetCheck public void setHeaderFile(String fileName) { // Handle empty param - if (fileName == null || fileName.trim().length() == 0) { + if (StringUtils.isBlank(fileName)) { return; } @@ -183,7 +184,7 @@ public abstract class AbstractHeaderCheck extends AbstractFileSetCheck */ public void setHeader(String header) { - if (header == null || header.trim().length() == 0) { + if (StringUtils.isBlank(header)) { return; } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java index df245b236..b17c79f1f 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/CustomImportOrderCheck.java @@ -540,7 +540,7 @@ public class CustomImportOrderCheck extends Check private boolean matchesSamePackageImportGroup(boolean isStatic, String importFullPath, String currentGroup) { - final String importPath = importFullPath.substring(0, importFullPath.lastIndexOf(".")); + final String importPath = importFullPath.substring(0, importFullPath.lastIndexOf('.')); return !isStatic && SAME_PACKAGE_RULE_GROUP.equals(currentGroup) && samePackageDomainsRegExp.contains(importPath); } @@ -670,8 +670,8 @@ public class CustomImportOrderCheck extends Check } else if (ruleStr.startsWith(SAME_PACKAGE_RULE_GROUP)) { - final String rule = ruleStr.substring(ruleStr.indexOf("(") + 1, - ruleStr.indexOf(")")); + final String rule = ruleStr.substring(ruleStr.indexOf('(') + 1, + ruleStr.indexOf(')')); try { samePackageMatchingDepth = Integer.parseInt(rule); } @@ -703,7 +703,7 @@ public class CustomImportOrderCheck extends Check int count = firstPackageDomainsCount; while (tokens.hasMoreTokens() && count > 0) { - builder.append(tokens.nextToken()).append("."); + builder.append(tokens.nextToken()).append('.'); count--; } return builder.append("*").toString(); diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java index 03f86ac7b..2cf42c52d 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/imports/ImportControlCheck.java @@ -27,6 +27,7 @@ import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.FullIdent; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.lang3.StringUtils; /** * Check that controls what packages can be imported in each package. Useful @@ -137,7 +138,7 @@ public class ImportControlCheck extends Check public void setUrl(final String url) { // Handle empty param - if (url == null || url.trim().length() == 0) { + if (StringUtils.isBlank(url)) { return; } final URI uri; @@ -164,7 +165,7 @@ public class ImportControlCheck extends Check public void setFile(final String name) { // Handle empty param - if (name == null || name.trim().length() == 0) { + if (StringUtils.isBlank(name)) { return; } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/OperatorWrapCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/OperatorWrapCheck.java index 7bc47f757..aa1e2338e 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/OperatorWrapCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/OperatorWrapCheck.java @@ -23,6 +23,7 @@ import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.TokenTypes; import com.puppycrawl.tools.checkstyle.Utils; import com.puppycrawl.tools.checkstyle.checks.AbstractOptionCheck; +import org.apache.commons.lang3.StringUtils; /** *

@@ -207,9 +208,8 @@ public class OperatorWrapCheck // by itself. This last bit is to handle the operator on a line by // itself. if (wOp == WrapOption.NL - && !text.equals(currentLine.trim()) - && currentLine.substring(colNo + text.length()) - .trim().length() == 0) + && !text.equals(currentLine.trim()) + && StringUtils.isBlank(currentLine.substring(colNo + text.length()))) { log(lineNo, colNo, LINE_NEW, text); } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/filters/CSVFilter.java b/src/main/java/com/puppycrawl/tools/checkstyle/filters/CSVFilter.java index a78f2b91d..d55c7f8f5 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/filters/CSVFilter.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/filters/CSVFilter.java @@ -68,7 +68,7 @@ class CSVFilter implements IntFilter final StringTokenizer tokenizer = new StringTokenizer(pattern, ","); while (tokenizer.hasMoreTokens()) { final String token = tokenizer.nextToken().trim(); - final int index = token.indexOf("-"); + final int index = token.indexOf('-'); if (index == -1) { final int matchValue = Integer.parseInt(token); addFilter(new IntMatchFilter(matchValue));