From bb032c98693012f45f43247a022b9cd98035f9b8 Mon Sep 17 00:00:00 2001 From: Ben Liblit Date: Tue, 27 Jun 2017 10:42:05 -0500 Subject: [PATCH] Add @Override annotations wherever possible In the `com.ibm.wala.util` project, configure Eclipse to treat any future violations of this as errors, not merely warnings. However, in `com.ibm.wala.cast.java.test.data`, configure Eclipse to silently ignore missing @Override annotations. The JLex code in this project is machine-generated, and we don't have a way to get the generator to produce @Override annotations. --- .../.settings/org.eclipse.jdt.core.prefs | 2 +- com.ibm.wala.cast.java.test.data/src/AnonymousClass.java | 5 +++++ com.ibm.wala.cast.java.test.data/src/FunkySupers.java | 1 + com.ibm.wala.cast.java.test.data/src/Inheritance1.java | 2 ++ .../src/InnerClassLexicalReads.java | 1 + com.ibm.wala.cast.java.test.data/src/InterfaceTest1.java | 1 + com.ibm.wala.cast.java.test.data/src/MiniaturSliceBug.java | 4 ++++ com.ibm.wala.cast.java.test.data/src/SimpleCalls.java | 1 + com.ibm.wala.cast.java.test.data/src/Thread1.java | 1 + com.ibm.wala.cast.java.test.data/src/foo/SimpleNames.java | 1 + .../src/foo/bar/hello/world/ConstructorsAndInitializers.java | 1 + .../src/foo/bar/hello/world/InnerClasses.java | 3 +++ .../src/foo/bar/hello/world/MethodMadness.java | 1 + .../src/javaonepointfive/AnonGeneNullarySimple.java | 1 + .../src/javaonepointfive/AnonymousGenerics.java | 4 ++++ .../src/javaonepointfive/Cocovariant.java | 2 ++ .../src/javaonepointfive/CustomGenericsAndFields.java | 3 +++ .../src/javaonepointfive/GenericMemberClasses.java | 3 +++ .../src/javaonepointfive/MoreOverriddenGenerics.java | 2 ++ .../src/javaonepointfive/NotSoSimpleEnums.java | 4 ++++ .../src/javaonepointfive/OverridesOnePointFour.java | 1 + .../src/javaonepointfive/VarargsCovariant.java | 1 + .../src/javaonepointfive/VarargsOverriding.java | 1 + com.ibm.wala.util/.settings/org.eclipse.jdt.core.prefs | 2 +- .../src/com/ibm/wala/util/collections/ArraySet.java | 1 + 25 files changed, 47 insertions(+), 2 deletions(-) diff --git a/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs index 3ee48ba78..1557847a1 100644 --- a/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.cast.java.test.data/.settings/org.eclipse.jdt.core.prefs @@ -58,7 +58,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error diff --git a/com.ibm.wala.cast.java.test.data/src/AnonymousClass.java b/com.ibm.wala.cast.java.test.data/src/AnonymousClass.java index 8aeea4c1c..92e015991 100644 --- a/com.ibm.wala.cast.java.test.data/src/AnonymousClass.java +++ b/com.ibm.wala.cast.java.test.data/src/AnonymousClass.java @@ -20,8 +20,10 @@ public class AnonymousClass { Foo f= new Foo() { int value = 3; + @Override public int getValue() { return value; } + @Override public int getValueBase() { return value - base.intValue(); } }; @@ -38,6 +40,7 @@ public class AnonymousClass { int y; + @Override public abstract int getValue(); FooImpl(int _y) { @@ -45,6 +48,7 @@ public class AnonymousClass { } + @Override public int getValueBase() { return y + getValue() - base.intValue(); } @@ -52,6 +56,7 @@ public class AnonymousClass { Foo f= new FooImpl(-4) { + @Override public int getValue() { return 7; } }; diff --git a/com.ibm.wala.cast.java.test.data/src/FunkySupers.java b/com.ibm.wala.cast.java.test.data/src/FunkySupers.java index 6c00052c1..d52b9f309 100644 --- a/com.ibm.wala.cast.java.test.data/src/FunkySupers.java +++ b/com.ibm.wala.cast.java.test.data/src/FunkySupers.java @@ -22,6 +22,7 @@ public class FunkySupers { class SubFunkySupers extends FunkySupers { + @Override int funky(FunkySupers fs) { SubFunkySupers.super.funky(fs); SubFunkySupers.this.funky(fs); diff --git a/com.ibm.wala.cast.java.test.data/src/Inheritance1.java b/com.ibm.wala.cast.java.test.data/src/Inheritance1.java index 4e2558e41..f52f9110b 100644 --- a/com.ibm.wala.cast.java.test.data/src/Inheritance1.java +++ b/com.ibm.wala.cast.java.test.data/src/Inheritance1.java @@ -32,10 +32,12 @@ class Base { } class Derived extends Base { + @Override public void foo() { super.foo(); } + @Override public String bar(int x) { return Integer.toHexString(x); } diff --git a/com.ibm.wala.cast.java.test.data/src/InnerClassLexicalReads.java b/com.ibm.wala.cast.java.test.data/src/InnerClassLexicalReads.java index 63cd71b3e..e1ddd6bc9 100644 --- a/com.ibm.wala.cast.java.test.data/src/InnerClassLexicalReads.java +++ b/com.ibm.wala.cast.java.test.data/src/InnerClassLexicalReads.java @@ -32,6 +32,7 @@ public class InnerClassLexicalReads { * 1 return v2:com.ibm.wala.ssa.SymbolTable$1@16b18b6[11:4] -> [11:13] */ + @Override public int getConstant() { return y; } diff --git a/com.ibm.wala.cast.java.test.data/src/InterfaceTest1.java b/com.ibm.wala.cast.java.test.data/src/InterfaceTest1.java index 2a0d8c22e..5bd1963fb 100644 --- a/com.ibm.wala.cast.java.test.data/src/InterfaceTest1.java +++ b/com.ibm.wala.cast.java.test.data/src/InterfaceTest1.java @@ -28,6 +28,7 @@ class FooIT1 implements IFoo { fValue= ch; } + @Override public char getValue() { return fValue; } diff --git a/com.ibm.wala.cast.java.test.data/src/MiniaturSliceBug.java b/com.ibm.wala.cast.java.test.data/src/MiniaturSliceBug.java index ddf287fee..4307a4dc4 100644 --- a/com.ibm.wala.cast.java.test.data/src/MiniaturSliceBug.java +++ b/com.ibm.wala.cast.java.test.data/src/MiniaturSliceBug.java @@ -30,6 +30,7 @@ abstract class PrimitiveWrapper { * @see java.lang.Object#equals(java.lang.Object) */ + @Override abstract public boolean equals(Object o); } @@ -49,6 +50,7 @@ final class IntWrapper extends PrimitiveWrapper { * @see com.ibm.miniatur.tests.sequential.PrimitiveWrapper#intValue() */ + @Override @SuppressWarnings("javadoc") public int intValue() { return val; @@ -59,6 +61,7 @@ final class IntWrapper extends PrimitiveWrapper { * @see com.ibm.miniatur.tests.sequential.PrimitiveWrapper#setIntValue(int) */ + @Override @SuppressWarnings("javadoc") public void setIntValue(int i) { this.val = i; @@ -69,6 +72,7 @@ final class IntWrapper extends PrimitiveWrapper { * @see com.ibm.miniatur.tests.sequential.PrimitiveWrapper#equals(java.lang.Object) */ + @Override @SuppressWarnings("javadoc") public boolean equals(Object o) { return o instanceof IntWrapper && ((IntWrapper)o).val==val; diff --git a/com.ibm.wala.cast.java.test.data/src/SimpleCalls.java b/com.ibm.wala.cast.java.test.data/src/SimpleCalls.java index 7ea739d60..ef56b5c23 100644 --- a/com.ibm.wala.cast.java.test.data/src/SimpleCalls.java +++ b/com.ibm.wala.cast.java.test.data/src/SimpleCalls.java @@ -14,6 +14,7 @@ interface ISimpleCalls { } public class SimpleCalls implements ISimpleCalls { + @Override public void helloWorld() { System.out.println("hello world!"); } diff --git a/com.ibm.wala.cast.java.test.data/src/Thread1.java b/com.ibm.wala.cast.java.test.data/src/Thread1.java index d483dbb10..3f07c9f29 100644 --- a/com.ibm.wala.cast.java.test.data/src/Thread1.java +++ b/com.ibm.wala.cast.java.test.data/src/Thread1.java @@ -14,6 +14,7 @@ class R implements Runnable { R(int i) { this.i = i; } + @Override public void run() { return; } diff --git a/com.ibm.wala.cast.java.test.data/src/foo/SimpleNames.java b/com.ibm.wala.cast.java.test.data/src/foo/SimpleNames.java index b46c5b610..4aa17e5a5 100644 --- a/com.ibm.wala.cast.java.test.data/src/foo/SimpleNames.java +++ b/com.ibm.wala.cast.java.test.data/src/foo/SimpleNames.java @@ -56,6 +56,7 @@ public class SimpleNames { final int i = 5; new Object() { + @Override public int hashCode() { f = 5; // SimpleNames.this = 5 s = 6; // SimpleNames.s = 6 diff --git a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/ConstructorsAndInitializers.java b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/ConstructorsAndInitializers.java index cc478b658..d05d008c1 100644 --- a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/ConstructorsAndInitializers.java +++ b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/ConstructorsAndInitializers.java @@ -76,6 +76,7 @@ public class ConstructorsAndInitializers extends Super { iX = 55 + 12; } + @Override public String toString() { return s + " -- from an anon class in " + iX + "," + sX + ": " + ConstructorsAndInitializers.this.s; } diff --git a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/InnerClasses.java b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/InnerClasses.java index d1422cdb8..149287fa9 100644 --- a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/InnerClasses.java +++ b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/InnerClasses.java @@ -45,6 +45,7 @@ public class InnerClasses extends Temp { Object supportLocalBusiness() { final int x = 54; class FooBar { + @Override public int hashCode() { return x; } } return new FooBar(); @@ -53,6 +54,7 @@ public class InnerClasses extends Temp { static Object anonymousCoward() { final int x = 5; return new Object() { + @Override public int hashCode() { return x; } }; } @@ -64,6 +66,7 @@ public class InnerClasses extends Temp { System.out.println(anonymousCoward().hashCode()); final String xx = "crazy"; Outie outie = new Outie("weird") { + @Override public String toString() { return "bogus" + x + xx + xxxx; } diff --git a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/MethodMadness.java b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/MethodMadness.java index b0bd1fe51..6c512fd6e 100644 --- a/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/MethodMadness.java +++ b/com.ibm.wala.cast.java.test.data/src/foo/bar/hello/world/MethodMadness.java @@ -96,6 +96,7 @@ public class MethodMadness { return 13 + x; } + @Override protected int protectedInteger() { return 233 + x; } diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonGeneNullarySimple.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonGeneNullarySimple.java index 02cf96ea2..1926b2925 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonGeneNullarySimple.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonGeneNullarySimple.java @@ -45,6 +45,7 @@ public class AnonGeneNullarySimple { static class StrTripler implements Ops { + @Override public String nullary() { String x = "talk about it "; return x+x+x; diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonymousGenerics.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonymousGenerics.java index 50f8c3ffb..f2fd4fb4b 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonymousGenerics.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/AnonymousGenerics.java @@ -49,10 +49,12 @@ public class AnonymousGenerics { // get erasures for all of those types and make a new method // that calls this one (with casts). no worries about return values. + @Override public String unary(String x) { return x + x + x; } + @Override public String nullary() { String x = "talk about it "; return x+x+x; @@ -66,10 +68,12 @@ public class AnonymousGenerics { private void doit() { Ops strQuadrupler = new Ops() { + @Override public String unary(String x) { return x+x+x+x; } + @Override public String nullary() { String x = "time to make a move to the global economy "; return x+x+x+x; diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/Cocovariant.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/Cocovariant.java index a2b08f2fe..f1504d99a 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/Cocovariant.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/Cocovariant.java @@ -43,10 +43,12 @@ public class Cocovariant { } static class B extends A { + @Override B foo(String x) { return null; } } static class C extends B { + @Override C foo(String x) { return null; } } public static void main(String[] args) { diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/CustomGenericsAndFields.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/CustomGenericsAndFields.java index 54260c4e0..6a44f4f4b 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/CustomGenericsAndFields.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/CustomGenericsAndFields.java @@ -52,6 +52,7 @@ class ConcreteGeneric implements IGeneric { Q x; + @Override public Q bar(Q a, Q b) { x = a; if (b.hashCode() == a.hashCode() || b.toString().equals(a.toString())) @@ -60,6 +61,7 @@ class ConcreteGeneric implements IGeneric { } + @Override public Q foo() { return x; } @@ -71,6 +73,7 @@ class ConcreteGeneric2 extends ConcreteGeneric { y = a; } + @Override public Q foo() { return y; } diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/GenericMemberClasses.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/GenericMemberClasses.java index 77885944c..2bfedf8d7 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/GenericMemberClasses.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/GenericMemberClasses.java @@ -46,17 +46,20 @@ public class GenericMemberClasses T x = null; private int localChangeID; + @Override public boolean hasNext() { return ( localChangeID == 5 ); } + @Override public T next() { localChangeID = 5; return x; } + @Override public void remove() { } } diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/MoreOverriddenGenerics.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/MoreOverriddenGenerics.java index 1684cca24..c9116deba 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/MoreOverriddenGenerics.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/MoreOverriddenGenerics.java @@ -48,6 +48,7 @@ public class MoreOverriddenGenerics { class Sub extends Super { + @Override public Number get() { return super.get(); } @@ -55,6 +56,7 @@ public class MoreOverriddenGenerics { class SubSub extends Sub { + @Override public Long get() { return new Long(6); } diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/NotSoSimpleEnums.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/NotSoSimpleEnums.java index 67769c635..060f422dd 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/NotSoSimpleEnums.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/NotSoSimpleEnums.java @@ -40,12 +40,16 @@ package javaonepointfive; public class NotSoSimpleEnums { public enum Direction { NORTH("nord") { + @Override public Direction getOpposite() { return SOUTH; }}, EAST("est") { + @Override public Direction getOpposite() { return WEST; }}, SOUTH("sud") { + @Override public Direction getOpposite() { return NORTH; }}, WEST("ouest") { + @Override public Direction getOpposite() { return EAST; }}; public abstract Direction getOpposite(); diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/OverridesOnePointFour.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/OverridesOnePointFour.java index 0fede31c1..c708122be 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/OverridesOnePointFour.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/OverridesOnePointFour.java @@ -44,6 +44,7 @@ public class OverridesOnePointFour { static class Sub implements Super { + @Override public Long get() { return new Long(6); } diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsCovariant.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsCovariant.java index 4f0c34905..2de1f2a4a 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsCovariant.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsCovariant.java @@ -47,6 +47,7 @@ public class VarargsCovariant { static class B extends A { + @Override B hello(int... x) { System.out.println("b hello"); return this; diff --git a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsOverriding.java b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsOverriding.java index a112e79db..2f8ea26b3 100644 --- a/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsOverriding.java +++ b/com.ibm.wala.cast.java.test.data/src/javaonepointfive/VarargsOverriding.java @@ -70,6 +70,7 @@ class VarityTestSuper { class VarityTestSub extends VarityTestSuper { + @Override void bar(String... args) {} } diff --git a/com.ibm.wala.util/.settings/org.eclipse.jdt.core.prefs b/com.ibm.wala.util/.settings/org.eclipse.jdt.core.prefs index ea3d5fd7e..2f17d894c 100644 --- a/com.ibm.wala.util/.settings/org.eclipse.jdt.core.prefs +++ b/com.ibm.wala.util/.settings/org.eclipse.jdt.core.prefs @@ -58,7 +58,7 @@ org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public -org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=error org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=error diff --git a/com.ibm.wala.util/src/com/ibm/wala/util/collections/ArraySet.java b/com.ibm.wala.util/src/com/ibm/wala/util/collections/ArraySet.java index 718cbe92f..ce789db99 100644 --- a/com.ibm.wala.util/src/com/ibm/wala/util/collections/ArraySet.java +++ b/com.ibm.wala.util/src/com/ibm/wala/util/collections/ArraySet.java @@ -106,6 +106,7 @@ public class ArraySet extends AbstractSet { /** * @throws UnsupportedOperationException if this {@link ArraySet} is immutable (optional) */ + @Override @SuppressWarnings("all") public boolean add(T o) { if (o == null) {