diff --git a/checkstyle_checks.xml b/checkstyle_checks.xml
index f592690f5..1cdf361da 100755
--- a/checkstyle_checks.xml
+++ b/checkstyle_checks.xml
@@ -211,5 +211,6 @@
RootDoc given to the doclet
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_1.java b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_1.java
new file mode 100644
index 000000000..dc80fb3ff
--- /dev/null
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_1.java
@@ -0,0 +1,8 @@
+package com.puppycrawl.tools.checkstyle.design;
+
+import java.io.Serializable;
+
+public abstract class HideUtilityClassContructor3041574_1 implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+}
\ No newline at end of file
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_2.java b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_2.java
new file mode 100644
index 000000000..af76f0d87
--- /dev/null
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_2.java
@@ -0,0 +1,8 @@
+package com.puppycrawl.tools.checkstyle.design;
+
+import java.io.Serializable;
+
+public class HideUtilityClassContructor3041574_2 implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+}
\ No newline at end of file
diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_3.java b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_3.java
new file mode 100644
index 000000000..2fc8da047
--- /dev/null
+++ b/src/testinputs/com/puppycrawl/tools/checkstyle/design/HideUtilityClassContructor3041574_3.java
@@ -0,0 +1,48 @@
+package com.puppycrawl.tools.checkstyle.design;
+
+import java.io.Serializable;
+
+public class HideUtilityClassContructor3041574_3 implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ public HideUtilityClassContructor3041574_3(int i) {
+ // no code
+ }
+
+ public String getValue() {
+ return "";
+ }
+
+ // It is NOT Utility Inner class
+ @SuppressWarnings("unused")
+ public static class Event {
+ // Top level class have access to fields - no need in public getters
+ private String ind;
+ private String ind1;
+
+ public Event(String value){
+ // do a lot of calculations
+ }
+
+ // static because this method is utility
+ public static String getEmptyString() {
+ return "";
+ }
+ }
+
+ // It is Utility Inner class
+ @SuppressWarnings("unused")
+ public static class Event1 {
+ private String ind;
+ private String ind1;
+
+ private Event1(){
+ // do a lot of calculations
+ }
+
+ // static because this method is utility
+ public static String getEmptyString() {
+ return "";
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/design/HideUtilityClassConstructorCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/design/HideUtilityClassConstructorCheckTest.java
index cd4a48051..130fbe7c8 100755
--- a/src/tests/com/puppycrawl/tools/checkstyle/checks/design/HideUtilityClassConstructorCheckTest.java
+++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/design/HideUtilityClassConstructorCheckTest.java
@@ -69,4 +69,34 @@ public class HideUtilityClassConstructorCheckTest
verify(checkConfig, getPath("design" + File.separator + "InputRegression1762702.java"), expected);
}
+ @Test
+ public void testEmptyAbstractClass() throws Exception
+ {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(HideUtilityClassConstructorCheck.class);
+ final String[] expected = {
+ };
+ verify(checkConfig, getPath("design" + File.separator + "HideUtilityClassContructor3041574_1.java"), expected);
+ }
+
+ @Test
+ public void testEmptyClassWithOnlyPrivateFields() throws Exception
+ {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(HideUtilityClassConstructorCheck.class);
+ final String[] expected = {
+ };
+ verify(checkConfig, getPath("design" + File.separator + "HideUtilityClassContructor3041574_2.java"), expected);
+ }
+
+ @Test
+ public void testClassWithStaticInnerClass() throws Exception
+ {
+ final DefaultConfiguration checkConfig =
+ createCheckConfig(HideUtilityClassConstructorCheck.class);
+ final String[] expected = {
+ };
+ verify(checkConfig, getPath("design" + File.separator + "HideUtilityClassContructor3041574_3.java"), expected);
+ }
+
}
diff --git a/src/xdocs/config_design.xml b/src/xdocs/config_design.xml
index 5d42c58c8..ccb4e3d9e 100755
--- a/src/xdocs/config_design.xml
+++ b/src/xdocs/config_design.xml
@@ -219,7 +219,8 @@
public class StringUtils // not final to allow subclassing
{
protected StringUtils() {
- throw new UnsupportedOperationException(); // prevents calls from subclass
+ // prevents calls from subclass
+ throw new UnsupportedOperationException();
}
public static int count(char c, String s) {
diff --git a/src/xdocs/releasenotes.xml b/src/xdocs/releasenotes.xml
index c60b19fe7..7946a317a 100755
--- a/src/xdocs/releasenotes.xml
+++ b/src/xdocs/releasenotes.xml
@@ -72,6 +72,12 @@
checking of @throws tags for methods that throw multiple
non-runtime exceptions. Thanks to Daan Kets for patch #3039869.
+ Notes: