diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheck.java index 069236dc7..9c56acba1 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheck.java @@ -41,7 +41,7 @@ import com.puppycrawl.tools.checkstyle.checks.AbstractFormatCheck; public final class AbstractClassNameCheck extends AbstractFormatCheck { /** Default format for abstract class names */ - private static final String DEFAULT_FORMAT = "^Abstract.*$|^.*Factory$"; + private static final String DEFAULT_FORMAT = "^Abstract.+$|^.*Factory$"; /** whether to ignore checking the modifier */ private boolean ignoreModifier; diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheckTest.java index f953ab024..2adb9051f 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/naming/AbstractClassNameCheckTest.java @@ -34,10 +34,10 @@ public class AbstractClassNameCheckTest extends BaseCheckTestSupport checkConfig.addAttribute("ignoreModifier", "true"); final String[] expected = { - "3:1: Name 'InputAbstractClassName' must match pattern '^Abstract.*$|^.*Factory$'.", - "6:1: Name 'NonAbstractClassName' must match pattern '^Abstract.*$|^.*Factory$'.", - "9:1: Name 'FactoryWithBadName' must match pattern '^Abstract.*$|^.*Factory$'.", - "13:5: Name 'NonAbstractInnerClass' must match pattern '^Abstract.*$|^.*Factory$'.", + "3:1: Name 'InputAbstractClassName' must match pattern '^Abstract.+$|^.*Factory$'.", + "6:1: Name 'NonAbstractClassName' must match pattern '^Abstract.+$|^.*Factory$'.", + "9:1: Name 'FactoryWithBadName' must match pattern '^Abstract.+$|^.*Factory$'.", + "13:5: Name 'NonAbstractInnerClass' must match pattern '^Abstract.+$|^.*Factory$'.", }; verify(checkConfig, getPath("naming" + File.separator + "InputAbstractClassName.java"), expected); @@ -68,10 +68,10 @@ public class AbstractClassNameCheckTest extends BaseCheckTestSupport checkConfig.addAttribute("ignoreModifier", "false"); final String[] expected = { - "3:1: Name 'InputAbstractClassName' must match pattern '^Abstract.*$|^.*Factory$'.", - "6:1: Name 'NonAbstractClassName' must match pattern '^Abstract.*$|^.*Factory$'.", - "9:1: Name 'FactoryWithBadName' must match pattern '^Abstract.*$|^.*Factory$'.", - "13:5: Name 'NonAbstractInnerClass' must match pattern '^Abstract.*$|^.*Factory$'.", + "3:1: Name 'InputAbstractClassName' must match pattern '^Abstract.+$|^.*Factory$'.", + "6:1: Name 'NonAbstractClassName' must match pattern '^Abstract.+$|^.*Factory$'.", + "9:1: Name 'FactoryWithBadName' must match pattern '^Abstract.+$|^.*Factory$'.", + "13:5: Name 'NonAbstractInnerClass' must match pattern '^Abstract.+$|^.*Factory$'.", "26:1: Class 'AbstractClass' must be declared as 'abstract'.", "29:1: Class 'Class1Factory' must be declared as 'abstract'.", "33:5: Class 'AbstractInnerClass' must be declared as 'abstract'.", @@ -80,4 +80,19 @@ public class AbstractClassNameCheckTest extends BaseCheckTestSupport verify(checkConfig, getPath("naming" + File.separator + "InputAbstractClassName.java"), expected); } + + @Test + public void testFalsePositive() throws Exception + { + final DefaultConfiguration checkConfig = createCheckConfig(AbstractClassNameCheck.class); +// checkConfig.addAttribute("ignoreName", "false"); +// checkConfig.addAttribute("ignoreModifier", "false"); + + final String[] expected = { + "9:5: Class 'AbstractClass' must be declared as 'abstract'.", + }; + + verify(checkConfig, getPath("naming" + File.separator + + "InputAbstractClassNameFormerFalsePositive.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/naming/InputAbstractClassNameFormerFalsePositive.java b/src/test/resources/com/puppycrawl/tools/checkstyle/naming/InputAbstractClassNameFormerFalsePositive.java new file mode 100644 index 000000000..bcfc28d10 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/naming/InputAbstractClassNameFormerFalsePositive.java @@ -0,0 +1,12 @@ +package com.puppycrawl.tools.checkstyle.naming; + +public class InputAbstractClassNameFormerFalsePositive +{ + class Abstract { + + } + + class AbstractClass { + + } +} diff --git a/src/xdocs/config_naming.xml b/src/xdocs/config_naming.xml index 675bd5e12..391dcda47 100644 --- a/src/xdocs/config_naming.xml +++ b/src/xdocs/config_naming.xml @@ -46,7 +46,7 @@
AbstractClassNameabstract classes^Abstract.*$|^.*Factory$^Abstract.+$|^.*Factory$ClassTypeParameterName