From 6b407f0b66264fea4b017ee223220fe1f167ec2c Mon Sep 17 00:00:00 2001 From: Mike Drob Date: Thu, 6 Jul 2017 14:13:26 -0700 Subject: [PATCH] HBASE-12349 Add custom error-prone module --- hbase-common/pom.xml | 5 ++ .../hadoop/hbase/util/ConcatenatedLists.java | 61 +------------------- .../org/apache/hadoop/hbase/TestChoreService.java | 2 +- .../hadoop/hbase/util/TestConcatenatedLists.java | 1 - .../apache/hadoop/hbase/util/TestDrainBarrier.java | 7 ++- hbase-error-prone/pom.xml | 61 ++++++++++++++++++++ .../hadoop/hbase/errorprone/AlwaysPasses.java | 26 +++++++++ .../regionserver/TestMetricsRegionSourceImpl.java | 1 + .../regionserver/TestMetricsTableSourceImpl.java | 1 + hbase-protocol/pom.xml | 34 +++++++++++ pom.xml | 67 +++++++++++++++------- 11 files changed, 181 insertions(+), 85 deletions(-) create mode 100644 hbase-error-prone/pom.xml create mode 100644 hbase-error-prone/src/main/java/org/apache/hadoop/hbase/errorprone/AlwaysPasses.java diff --git a/hbase-common/pom.xml b/hbase-common/pom.xml index ae0f6923cb..7c80b7beab 100644 --- a/hbase-common/pom.xml +++ b/hbase-common/pom.xml @@ -219,6 +219,11 @@ test-jar test + + org.apache.hbase + hbase-error-prone + provided + com.google.guava diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ConcatenatedLists.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ConcatenatedLists.java index ba54f9d49c..d191af0b80 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ConcatenatedLists.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/util/ConcatenatedLists.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.util; import java.lang.reflect.Array; +import java.util.AbstractCollection; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -33,7 +34,7 @@ import org.apache.hadoop.hbase.classification.InterfaceAudience; * NOTE: Doesn't implement list as it is not necessary for current usage, feel free to add. */ @InterfaceAudience.Private -public class ConcatenatedLists implements Collection { +public class ConcatenatedLists extends AbstractCollection { protected final ArrayList> components = new ArrayList<>(); protected int size = 0; @@ -56,11 +57,6 @@ public class ConcatenatedLists implements Collection { } @Override - public boolean isEmpty() { - return this.size == 0; - } - - @Override public boolean contains(Object o) { for (List component : this.components) { if (component.contains(o)) return true; @@ -69,64 +65,11 @@ public class ConcatenatedLists implements Collection { } @Override - public boolean containsAll(Collection c) { - for (Object o : c) { - if (!contains(o)) return false; - } - return true; - } - - @Override - public Object[] toArray() { - return toArray((Object[])Array.newInstance(Object.class, this.size)); - } - - @Override - @SuppressWarnings("unchecked") - public U[] toArray(U[] a) { - U[] result = (a.length == this.size()) ? a - : (U[])Array.newInstance(a.getClass().getComponentType(), this.size); - int i = 0; - for (List component : this.components) { - for (T t : component) { - result[i] = (U)t; - ++i; - } - } - return result; - } - - @Override - public boolean add(T e) { - throw new UnsupportedOperationException(); - } - - @Override public boolean remove(Object o) { throw new UnsupportedOperationException(); } @Override - public boolean addAll(Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean removeAll(Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public boolean retainAll(Collection c) { - throw new UnsupportedOperationException(); - } - - @Override - public void clear() { - throw new UnsupportedOperationException(); - } - - @Override public java.util.Iterator iterator() { return new Iterator(); } diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java index f290e1da2a..76eca166b4 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/TestChoreService.java @@ -136,7 +136,7 @@ public class TestChoreService { try { Thread.sleep(sleepTime); } catch (Exception e) { - System.err.println(e.getStackTrace()); + e.printStackTrace(); } } } diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestConcatenatedLists.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestConcatenatedLists.java index cfd288d8da..b6868a658f 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestConcatenatedLists.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestConcatenatedLists.java @@ -121,7 +121,6 @@ public class TestConcatenatedLists { private void verify(ConcatenatedLists c, int last) { assertEquals((last == -1), c.isEmpty()); assertEquals(last + 1, c.size()); - assertTrue(c.containsAll(c)); Long[] array = c.toArray(new Long[c.size()]); List all = new ArrayList<>(); Iterator iter = c.iterator(); diff --git a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestDrainBarrier.java b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestDrainBarrier.java index 4542cbd59e..d3ddef88c6 100644 --- a/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestDrainBarrier.java +++ b/hbase-common/src/test/java/org/apache/hadoop/hbase/util/TestDrainBarrier.java @@ -43,10 +43,11 @@ public class TestDrainBarrier { @Test public void testUnmatchedEndAssert() throws Exception { + boolean failed = false; DrainBarrier barrier = new DrainBarrier(); try { barrier.endOp(); - fail("Should have asserted"); + throw new Error("Should have asserted."); } catch (AssertionError e) { } @@ -56,7 +57,7 @@ public class TestDrainBarrier { barrier.endOp(); try { barrier.endOp(); - fail("Should have asserted"); + throw new Error("Should have asserted."); } catch (AssertionError e) { } } @@ -108,7 +109,7 @@ public class TestDrainBarrier { barrier.stopAndDrainOpsOnce(); try { barrier.stopAndDrainOpsOnce(); - fail("Should have asserted"); + throw new Error("Should have asserted."); } catch (AssertionError e) { } } diff --git a/hbase-error-prone/pom.xml b/hbase-error-prone/pom.xml new file mode 100644 index 0000000000..9d1fc2fb32 --- /dev/null +++ b/hbase-error-prone/pom.xml @@ -0,0 +1,61 @@ + + + + 4.0.0 + + apache + org.apache + 18 + + + org.apache.hbase + hbase-error-prone + 3.0.0-SNAPSHOT + Apache HBase - Error Prone Rules + Module to hold error prone custom rules for HBase. + + + + com.google.errorprone + error_prone_core + 2.0.21 + provided + + + com.google.code.findbugs + jsr305 + + + + + com.google.errorprone + error_prone_annotation + 2.0.21 + provided + + + com.google.auto.service + auto-service + 1.0-rc3 + true + + + diff --git a/hbase-error-prone/src/main/java/org/apache/hadoop/hbase/errorprone/AlwaysPasses.java b/hbase-error-prone/src/main/java/org/apache/hadoop/hbase/errorprone/AlwaysPasses.java new file mode 100644 index 0000000000..6d9c8c1b39 --- /dev/null +++ b/hbase-error-prone/src/main/java/org/apache/hadoop/hbase/errorprone/AlwaysPasses.java @@ -0,0 +1,26 @@ +package org.apache.hadoop.hbase.errorprone; + +import com.google.auto.service.AutoService; +import com.google.errorprone.BugPattern; +import com.google.errorprone.VisitorState; +import com.google.errorprone.bugpatterns.BugChecker; +import com.google.errorprone.fixes.Fix; +import com.google.errorprone.fixes.SuggestedFix; +import com.google.errorprone.matchers.Description; +import com.google.errorprone.matchers.Matcher; +import com.sun.source.tree.CompilationUnitTree; +import com.sun.source.tree.ImportTree; + +@AutoService(BugChecker.class) +@BugPattern(name = "AlwaysPasses", + category = BugPattern.Category.JDK, + summary = "A placeholder rule that never matches.", + severity = BugPattern.SeverityLevel.ERROR, + suppressibility = BugPattern.Suppressibility.UNSUPPRESSIBLE, + linkType = BugPattern.LinkType.NONE) +public class AlwaysPasses extends BugChecker implements BugChecker.CompilationUnitTreeMatcher { + @Override + public Description matchCompilationUnit(CompilationUnitTree tree, VisitorState state) { + return Description.NO_MATCH; + } +} \ No newline at end of file diff --git a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java index 6724939b24..f6356d6a4b 100644 --- a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java +++ b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java @@ -32,6 +32,7 @@ import org.junit.experimental.categories.Category; @Category({MetricsTests.class, SmallTests.class}) public class TestMetricsRegionSourceImpl { + @SuppressWarnings("SelfComparison") @Test public void testCompareToHashCodeEquals() throws Exception { MetricsRegionServerSourceFactory fact = CompatibilitySingletonFactory.getInstance(MetricsRegionServerSourceFactory.class); diff --git a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java index 2717817e0a..3a9e73dc1b 100644 --- a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java +++ b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java @@ -34,6 +34,7 @@ import org.junit.experimental.categories.Category; @Category({MetricsTests.class, SmallTests.class}) public class TestMetricsTableSourceImpl { + @SuppressWarnings("SelfComparison") @Test public void testCompareToHashCode() throws Exception { MetricsRegionServerSourceFactory metricsFact = diff --git a/hbase-protocol/pom.xml b/hbase-protocol/pom.xml index 69e1baa3d2..1d8efd4c27 100644 --- a/hbase-protocol/pom.xml +++ b/hbase-protocol/pom.xml @@ -82,6 +82,40 @@ + + com.google.code.maven-replacer-plugin + maven-replacer-plugin + 1.4.1 + + + process-sources + + replace + + + + + + target/generated-sources/**/*.java + + + true + + MULTILINE + + + + + ^public final class + @javax.annotation.Generated("protoc") public final class + + + ^ public static final class + @javax.annotation.Generated("protoc") public static final class + + + + diff --git a/pom.xml b/pom.xml index 1c0f3a2c4e..88768bc433 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,7 @@ + hbase-error-prone hbase-resource-bundle hbase-server hbase-thrift @@ -1497,6 +1498,11 @@ org.apache.hbase + hbase-error-prone + ${project.version} + + + org.apache.hbase hbase-common ${project.version} @@ -3104,27 +3110,46 @@ false - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.version} - - javac-with-errorprone - true - - - - org.codehaus.plexus - plexus-compiler-javac-errorprone - 2.5 - - - - - + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven.compiler.version} + + javac-with-errorprone + true + true + + -XepDisableWarningsInGeneratedCode + -Xep:FallThrough:OFF + + + + org.apache.hbase + hbase-error-prone + ${project.version} + + + + + + org.codehaus.plexus + plexus-compiler-javac-errorprone + 2.8.2 + + + + com.google.errorprone + error_prone_core + 2.0.21 + + + + + -- 2.13.0