diff --git a/build.xml b/build.xml index 688a08068..01f9fd587 100644 --- a/build.xml +++ b/build.xml @@ -182,7 +182,7 @@ + value="**/grammars/*,**/j2ee/*,**/InputAssertIdentifier.java,**/InputJUnitTest.java,**/InputValidMethodIndent.java,**/InputSetterGetter.java,**/InputImport.java,**/InputCovariant.java,**/InputClone.java,**/InputSimple.java"/> Object clone() { - super.clone(); + return super.clone(); } } @@ -70,4 +70,4 @@ class MyClassWithGenericSuperMethod { } -} \ No newline at end of file +} diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java index 573773537..ef243bf94 100644 --- a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputExplicitInit.java @@ -60,11 +60,14 @@ enum InputExplicitInit3 { } class ForEach { - public ForEach(Collection strings) + public ForEach(java.util.Collection strings) { for(String s : strings) //this should not even be checked { } } -} \ No newline at end of file +} + +class Bar { +} diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java index 72c1ea7d8..535208e9f 100644 --- a/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/coding/InputFinalize.java @@ -44,10 +44,10 @@ class InnerFinalize } //Check that super keword isn't snagged here -class MyClassWithGenericSuperMethod +class MyClassWithGenericSuperMethod1 { void someMethod(java.util.List l) { } -} \ No newline at end of file +} diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java new file mode 100644 index 000000000..bb7db0ea4 --- /dev/null +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputEmptyFile.java @@ -0,0 +1,2 @@ +// this is an empty file +// it's a test for 1165855 diff --git a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java index 78037508c..6aa8b6b2e 100644 --- a/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java +++ b/src/testinputs/com/puppycrawl/tools/checkstyle/usage/InputUnusedMethod.java @@ -86,7 +86,7 @@ class SerializableTest implements java.io.Serializable } } -class BadSerializableTest implements java.io.Serializable +class BadSerializableTest1 implements java.io.Serializable { private void writeObject(Object out) throws java.io.IOException { @@ -100,36 +100,19 @@ class BadSerializableTest implements java.io.Serializable { } - private int writeObject(java.io.ObjectOutputStream out) throws java.io.IOException - { - } - private void readObject(java.io.ObjectInputStream in) throws java.io.IOException { } - private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException - { - } - private void readObject(Object in) throws java.io.IOException, ClassNotFoundException { } - private int readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException - { - } - private int writeReplace() throws java.io.ObjectStreamException { return 1; } - private java.lang.Object writeReplace() - { - return new SerializableTest(); - } - private Object writeReplace(int i) throws java.io.ObjectStreamException { return new SerializableTest(); @@ -140,13 +123,33 @@ class BadSerializableTest implements java.io.Serializable return 1; } - private Object readResolve() - { - return new SerializableTest(); - } - private Object readResolve(int i) throws java.io.ObjectStreamException { return new SerializableTest(); } } + +class BadSerializableTest2 implements java.io.Serializable +{ + private int writeObject(java.io.ObjectOutputStream out) throws java.io.IOException + { + return 1; + } + + private void readObject(java.io.ObjectInputStream in) throws ClassNotFoundException + { + } + + private Object readResolve() + { + return new SerializableTest(); + } +} + +class BadSerializableTest3 implements java.io.Serializable +{ + private int readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException + { + return 1; + } +} diff --git a/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java b/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java index b2e5cd32c..d37077b4f 100644 --- a/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java +++ b/src/tests/com/puppycrawl/tools/checkstyle/checks/usage/UnusedPrivateMethodCheckTest.java @@ -19,17 +19,16 @@ public class UnusedPrivateMethodCheckTest "91:18: Unused private method 'writeObject'.", "95:18: Unused private method 'writeObject'.", "99:18: Unused private method 'writeObject'.", - "103:17: Unused private method 'writeObject'.", + "103:18: Unused private method 'readObject'.", "107:18: Unused private method 'readObject'.", - "111:18: Unused private method 'readObject'.", - "115:18: Unused private method 'readObject'.", - "119:17: Unused private method 'readObject'.", - "123:17: Unused private method 'writeReplace'.", - "128:30: Unused private method 'writeReplace'.", - "133:20: Unused private method 'writeReplace'.", - "138:17: Unused private method 'readResolve'.", + "111:17: Unused private method 'writeReplace'.", + "116:20: Unused private method 'writeReplace'.", + "121:17: Unused private method 'readResolve'.", + "126:20: Unused private method 'readResolve'.", + "134:17: Unused private method 'writeObject'.", + "139:18: Unused private method 'readObject'.", "143:20: Unused private method 'readResolve'.", - "148:20: Unused private method 'readResolve'.", + "151:17: Unused private method 'readObject'.", }; verify(checkConfig, getPath("usage/InputUnusedMethod.java"), expected); } @@ -45,17 +44,16 @@ public class UnusedPrivateMethodCheckTest "91:18: Unused private method 'writeObject'.", "95:18: Unused private method 'writeObject'.", "99:18: Unused private method 'writeObject'.", - "103:17: Unused private method 'writeObject'.", + "103:18: Unused private method 'readObject'.", "107:18: Unused private method 'readObject'.", - "111:18: Unused private method 'readObject'.", - "115:18: Unused private method 'readObject'.", - "119:17: Unused private method 'readObject'.", - "123:17: Unused private method 'writeReplace'.", - "128:30: Unused private method 'writeReplace'.", - "133:20: Unused private method 'writeReplace'.", - "138:17: Unused private method 'readResolve'.", + "111:17: Unused private method 'writeReplace'.", + "116:20: Unused private method 'writeReplace'.", + "121:17: Unused private method 'readResolve'.", + "126:20: Unused private method 'readResolve'.", + "134:17: Unused private method 'writeObject'.", + "139:18: Unused private method 'readObject'.", "143:20: Unused private method 'readResolve'.", - "148:20: Unused private method 'readResolve'.", + "151:17: Unused private method 'readObject'.", }; verify(checkConfig, getPath("usage/InputUnusedMethod.java"), expected); } @@ -68,4 +66,13 @@ public class UnusedPrivateMethodCheckTest }; verify(checkConfig, getPath("usage/InputInnerUsedMethod.java"), expected); } + + public void testEmptyFile() throws Exception + { + final DefaultConfiguration checkConfig = + createCheckConfig(UnusedPrivateMethodCheck.class); + final String[] expected = { + }; + verify(checkConfig, getPath("usage/InputEmptyFile.java"), expected); + } } diff --git a/src/xdocs/releasenotes.xml b/src/xdocs/releasenotes.xml index 38b79df4c..f2af60ec4 100755 --- a/src/xdocs/releasenotes.xml +++ b/src/xdocs/releasenotes.xml @@ -26,6 +26,9 @@
  • Fixed bug #1185722 (DeclarationCollector.leaveToken unbalanced with visitToken)
  • +
  • Fixed NPE in AbstractUsageCheck when we process an empty + file (bug 1165855)
  • +