From 91a49a90d40c6adad5f973f792c6b80003a69263 Mon Sep 17 00:00:00 2001 From: rnveach Date: Thu, 29 Oct 2015 16:09:39 -0400 Subject: [PATCH] Issue #2451: removed excess hierarchy from IllegalTypeCheck --- config/suppressions.xml | 2 +- .../checks/coding/IllegalTypeCheck.java | 27 ++++++++++++++----- .../tools/checkstyle/XDocsPagesTest.java | 1 - 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/config/suppressions.xml b/config/suppressions.xml index f22af291b5e..fe18472f24f 100644 --- a/config/suppressions.xml +++ b/config/suppressions.xml @@ -37,7 +37,7 @@ files="AbstractClassNameCheckTest.java|AbstractTypeAwareCheckTest.java|AbstractJavadocCheckTest.java|AbstractViolationReporterTest.java"/> - + 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 26184214af1..bb9f6598a38 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 @@ -23,13 +23,15 @@ import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.regex.Pattern; import com.google.common.collect.Sets; +import com.puppycrawl.tools.checkstyle.api.Check; import com.puppycrawl.tools.checkstyle.api.DetailAST; import com.puppycrawl.tools.checkstyle.api.FullIdent; import com.puppycrawl.tools.checkstyle.api.TokenTypes; -import com.puppycrawl.tools.checkstyle.checks.AbstractFormatCheck; import com.puppycrawl.tools.checkstyle.utils.CheckUtils; +import com.puppycrawl.tools.checkstyle.utils.CommonUtils; import com.puppycrawl.tools.checkstyle.utils.TokenUtils; /** @@ -89,7 +91,7 @@ * @author Aleksey Nesterenko * @author Andrei Selkin */ -public final class IllegalTypeCheck extends AbstractFormatCheck { +public final class IllegalTypeCheck extends Check { /** * A key is pointing to the warning message text in "messages.properties" @@ -97,8 +99,6 @@ public final class IllegalTypeCheck extends AbstractFormatCheck { */ public static final String MSG_KEY = "illegal.type"; - /** Default value of pattern for illegal class name. */ - private static final String DEFAULT_FORMAT = "^(.*[\\.])?Abstract.*$"; /** Abstract classes legal by default. */ private static final String[] DEFAULT_LEGAL_ABSTRACT_NAMES = {}; /** Types illegal by default. */ @@ -132,6 +132,12 @@ public final class IllegalTypeCheck extends AbstractFormatCheck { /** Check methods and fields with only corresponding modifiers. */ private List memberModifiers; + /** The format string of the regexp. */ + private String format = "^(.*[\\.])?Abstract.*$"; + + /** The regexp to match against. */ + private Pattern regexp = Pattern.compile(format); + /** * Controls whether to validate abstract class names. */ @@ -139,12 +145,21 @@ public final class IllegalTypeCheck extends AbstractFormatCheck { /** Creates new instance of the check. */ public IllegalTypeCheck() { - super(DEFAULT_FORMAT); setIllegalClassNames(DEFAULT_ILLEGAL_TYPES); setLegalAbstractClassNames(DEFAULT_LEGAL_ABSTRACT_NAMES); setIgnoredMethodNames(DEFAULT_IGNORED_METHOD_NAMES); } + /** + * Set the format to the specified regular expression. + * @param format a {@code String} value + * @throws org.apache.commons.beanutils.ConversionException unable to parse format + */ + public void setFormat(String format) { + this.format = format; + regexp = CommonUtils.createPattern(format); + } + /** * Sets whether to validate abstract class names. * @param validateAbstractClassNames whether abstract class names must be ignored. @@ -325,7 +340,7 @@ private boolean isMatchingClassName(String className) { || illegalClassNames.contains(shortName) || validateAbstractClassNames && !legalAbstractClassNames.contains(className) - && getRegexp().matcher(className).find(); + && regexp.matcher(className).find(); } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java index d4d62730e36..0ffb433da31 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/XDocsPagesTest.java @@ -112,7 +112,6 @@ public class XDocsPagesTest { "SuppressWithNearbyCommentFilter.fileContents", "IllegalTokenTextCheck.compileFlags", "ReturnCountCheck.compileFlags", - "IllegalTypeCheck.compileFlags", "MutableExceptionCheck.compileFlags", "AbstractClassNameCheck.compileFlags", "ClassTypeParameterNameCheck.compileFlags",