You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by le...@apache.org on 2018/11/26 15:55:49 UTC

[incubator-druid] branch master updated: Find duplicate lines with checkstyle; enable some duplicate inspections in IntelliJ (#6558)

This is an automated email from the ASF dual-hosted git repository.

leventov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-druid.git


The following commit(s) were added to refs/heads/master by this push:
     new 887c645  Find duplicate lines with checkstyle; enable some duplicate inspections in IntelliJ (#6558)
887c645 is described below

commit 887c6456755bcd8d1bab96b41c9e569f00e9123e
Author: Roman Leventov <le...@gmail.com>
AuthorDate: Mon Nov 26 16:55:42 2018 +0100

    Find duplicate lines with checkstyle; enable some duplicate inspections in IntelliJ (#6558)
    
    Not putting this to 0.13 milestone because the found bugs are not critical (one is a harmless DI config duplicate, and another is in a benchmark.
    
    Change in `DumpSegment` is just an indentation change.
---
 .idea/inspectionProfiles/Druid.xml                 |  8 +++
 .../druid/benchmark/query/SearchBenchmark.java     |  7 +--
 codestyle/checkstyle-suppressions.xml              |  7 ++-
 codestyle/checkstyle.xml                           |  8 +++
 .../druid/jackson/CommaListJoinDeserializer.java   |  3 +-
 .../druid/jackson/CommaListJoinSerializer.java     |  4 +-
 .../apache/druid/indexer/TaskStatusPlusTest.java   |  4 +-
 .../tuple/ArrayOfDoublesSketchJsonSerializer.java  |  3 +-
 .../cache/JdbcExtractionNamespaceTest.java         |  7 +--
 .../org/apache/druid/guice/NullHandlingModule.java |  1 -
 .../jackson/DruidDefaultSerializersModule.java     |  8 +--
 .../java/org/apache/druid/jackson/JodaStuff.java   |  6 +-
 .../java/org/apache/druid/cli/DumpSegment.java     | 71 +++++++++++-----------
 13 files changed, 69 insertions(+), 68 deletions(-)

diff --git a/.idea/inspectionProfiles/Druid.xml b/.idea/inspectionProfiles/Druid.xml
index 97f079f..6bb556d 100644
--- a/.idea/inspectionProfiles/Druid.xml
+++ b/.idea/inspectionProfiles/Druid.xml
@@ -29,6 +29,11 @@
     <inspection_tool class="Contract" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="CopyConstructorMissesField" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="CovariantEquals" enabled="true" level="ERROR" enabled_by_default="true" />
+    <inspection_tool class="DuplicateBooleanBranch" enabled="true" level="ERROR" enabled_by_default="true" />
+    <inspection_tool class="DuplicateCondition" enabled="true" level="ERROR" enabled_by_default="true">
+      <option name="ignoreSideEffectConditions" value="true" />
+    </inspection_tool>
+    <inspection_tool class="DuplicateThrows" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="EmptyInitializer" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="EmptyStatementBody" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="m_reportEmptyBlocks" value="true" />
@@ -71,6 +76,7 @@
     <inspection_tool class="InvalidComparatorMethodReference" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="IteratorHasNextCallsIteratorNext" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="IteratorNextDoesNotThrowNoSuchElementException" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="JsonDuplicatePropertyKeys" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="JsonStandardCompliance" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="LengthOneStringInIndexOf" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="ListIndexOfReplaceableByContains" enabled="true" level="ERROR" enabled_by_default="true" />
@@ -80,6 +86,8 @@
     </inspection_tool>
     <inspection_tool class="MalformedRegex" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="MathRandomCastToInt" enabled="true" level="ERROR" enabled_by_default="true" />
+    <inspection_tool class="MavenDuplicateDependenciesInspection" enabled="true" level="ERROR" enabled_by_default="true" />
+    <inspection_tool class="MavenDuplicatePluginInspection" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="MavenModelInspection" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MismatchedArrayReadWrite" enabled="true" level="ERROR" enabled_by_default="true" />
     <inspection_tool class="MismatchedCollectionQueryUpdate" enabled="true" level="ERROR" enabled_by_default="true">
diff --git a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java
index 3b2f667..c7008fc 100644
--- a/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java
+++ b/benchmarks/src/main/java/org/apache/druid/benchmark/query/SearchBenchmark.java
@@ -282,7 +282,9 @@ public class SearchBenchmark
 
   private static SearchQueryBuilder basicD(final BenchmarkSchemaInfo basicSchema)
   {
-    final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(Collections.singletonList(basicSchema.getDataInterval()));
+    final QuerySegmentSpec intervalSpec = new MultipleIntervalSegmentSpec(
+        Collections.singletonList(basicSchema.getDataInterval())
+    );
 
     final List<String> dimUniformFilterVals = new ArrayList<>();
     final int resultNum = (int) (100000 * 0.1);
@@ -296,9 +298,6 @@ public class SearchBenchmark
     dimFilters.add(new InDimFilter(dimName, dimUniformFilterVals, null));
     dimFilters.add(new SelectorDimFilter(dimName, "3", null));
     dimFilters.add(new BoundDimFilter(dimName, "100", "10000", true, true, true, null, null));
-    dimFilters.add(new InDimFilter(dimName, dimUniformFilterVals, null));
-    dimFilters.add(new InDimFilter(dimName, dimUniformFilterVals, null));
-    dimFilters.add(new InDimFilter(dimName, dimUniformFilterVals, null));
 
     return Druids.newSearchQueryBuilder()
                  .dataSource("blah")
diff --git a/codestyle/checkstyle-suppressions.xml b/codestyle/checkstyle-suppressions.xml
index bf5087c..0c8300a 100644
--- a/codestyle/checkstyle-suppressions.xml
+++ b/codestyle/checkstyle-suppressions.xml
@@ -50,13 +50,16 @@
 
   <suppress checks="Indentation" files="[\\/]target[\\/]generated-test-sources[\\/]" />
   <suppress checks="Indentation" files="ProtoTestEventWrapper.java" />
-  <suppress checks="Regex" files="ProtoTestEventWrapper.java" />
+  <suppress checks="Regexp" id="argumentLineBreaking" files="ProtoTestEventWrapper.java" />
 
   <suppress checks="OneStatementPerLine" files="[\\/]target[\\/]generated-test-sources[\\/]" />
 
-  <!-- extendedset is a fork of Alessandro Colantonio's CONCISE (COmpressed 'N' Composable Integer SEt) repository and licensed to ASF under a CLA is not true. -->
+  <!-- extendedset is a fork of Alessandro Colantonio's CONCISE (COmpressed 'N' Composable Integer SEt) repository
+       and licensed to ASF under a CLA is not true. -->
   <suppress checks="Header" files="[\\/]extendedset[\\/]" />
 
+  <suppress checks="Regexp" id="duplicateLine" files="[\\/]src[\\/]test[\\/]" />
+
   <!-- See https://github.com/checkstyle/checkstyle/issues/5510 and the ImportOrder definition in checkstyle.xml -->
   <suppress checks="ImportOrder" message="^'java\..*'.*" />
 
diff --git a/codestyle/checkstyle.xml b/codestyle/checkstyle.xml
index 16e8c14..d6ef3e8 100644
--- a/codestyle/checkstyle.xml
+++ b/codestyle/checkstyle.xml
@@ -221,6 +221,7 @@
     </module>
 
     <module name="Regexp">
+      <property name="id" value="argumentLineBreaking"/>
       <property
           name="format"
           value='(?&lt;!ImmutableMap.of|Types.mapOf|orderedMap|makeSelectResults|makeListOfPairs)\(\s*\n +([^,\n\(\{"&lt;/]+|[^,\n\(\{" /]+&gt; [a-zA-Z0-9_]+)\, ++[^,\n/]+'
@@ -277,5 +278,12 @@ If you encouter a map-like or a pair-accepting method that is reported by this&#
 checkstyle rule, you should add it as an exception in the corresponding rule in&#10;
 codestyle/checkstyle.xml.&#10;"/>
     </module>
+
+    <module name="Regexp">
+      <property name="id" value="duplicateLine"/>
+      <property name="format" value="^(.*;)(\r?\n\1)+$"/>
+      <property name="illegalPattern" value="true"/>
+      <property name="message" value="Duplicate line"/>
+    </module>
   </module>
 </module>
diff --git a/core/src/main/java/org/apache/druid/jackson/CommaListJoinDeserializer.java b/core/src/main/java/org/apache/druid/jackson/CommaListJoinDeserializer.java
index bda1f36..b9910e6 100644
--- a/core/src/main/java/org/apache/druid/jackson/CommaListJoinDeserializer.java
+++ b/core/src/main/java/org/apache/druid/jackson/CommaListJoinDeserializer.java
@@ -20,7 +20,6 @@
 package org.apache.druid.jackson;
 
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer;
 
@@ -39,7 +38,7 @@ public class CommaListJoinDeserializer extends StdScalarDeserializer<List<String
 
   @Override
   public List<String> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
-      throws IOException, JsonProcessingException
+      throws IOException
   {
     return Arrays.asList(jsonParser.getText().split(","));
   }
diff --git a/core/src/main/java/org/apache/druid/jackson/CommaListJoinSerializer.java b/core/src/main/java/org/apache/druid/jackson/CommaListJoinSerializer.java
index 8d62da4..05c733c 100644
--- a/core/src/main/java/org/apache/druid/jackson/CommaListJoinSerializer.java
+++ b/core/src/main/java/org/apache/druid/jackson/CommaListJoinSerializer.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.jackson;
 
-import com.fasterxml.jackson.core.JsonGenerationException;
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.fasterxml.jackson.databind.ser.std.StdScalarSerializer;
@@ -40,8 +39,7 @@ public class CommaListJoinSerializer extends StdScalarSerializer<List<String>>
   }
 
   @Override
-  public void serialize(List<String> value, JsonGenerator jgen, SerializerProvider provider)
-      throws IOException, JsonGenerationException
+  public void serialize(List<String> value, JsonGenerator jgen, SerializerProvider provider) throws IOException
   {
     jgen.writeString(joiner.join(value));
   }
diff --git a/core/src/test/java/org/apache/druid/indexer/TaskStatusPlusTest.java b/core/src/test/java/org/apache/druid/indexer/TaskStatusPlusTest.java
index f99ea0a..9d48172 100644
--- a/core/src/test/java/org/apache/druid/indexer/TaskStatusPlusTest.java
+++ b/core/src/test/java/org/apache/druid/indexer/TaskStatusPlusTest.java
@@ -20,7 +20,6 @@
 package org.apache.druid.indexer;
 
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -109,8 +108,7 @@ public class TaskStatusPlusTest
     }
 
     @Override
-    public DateTime deserialize(JsonParser jp, DeserializationContext ctxt)
-        throws IOException, JsonProcessingException
+    public DateTime deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException
     {
       JsonToken t = jp.getCurrentToken();
       if (t == JsonToken.VALUE_NUMBER_INT) {
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchJsonSerializer.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchJsonSerializer.java
index b163706..841ef78 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchJsonSerializer.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchJsonSerializer.java
@@ -20,7 +20,6 @@
 package org.apache.druid.query.aggregation.datasketches.tuple;
 
 import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonSerializer;
 import com.fasterxml.jackson.databind.SerializerProvider;
 import com.yahoo.sketches.tuple.ArrayOfDoublesSketch;
@@ -35,7 +34,7 @@ public class ArrayOfDoublesSketchJsonSerializer extends JsonSerializer<ArrayOfDo
       final ArrayOfDoublesSketch sketch,
       final JsonGenerator generator,
       final SerializerProvider provider
-  ) throws IOException, JsonProcessingException
+  ) throws IOException
   {
     generator.writeBinary(sketch.toByteArray());
   }
diff --git a/extensions-core/lookups-cached-global/src/test/java/org/apache/druid/server/lookup/namespace/cache/JdbcExtractionNamespaceTest.java b/extensions-core/lookups-cached-global/src/test/java/org/apache/druid/server/lookup/namespace/cache/JdbcExtractionNamespaceTest.java
index fd89b7b..deef14e 100644
--- a/extensions-core/lookups-cached-global/src/test/java/org/apache/druid/server/lookup/namespace/cache/JdbcExtractionNamespaceTest.java
+++ b/extensions-core/lookups-cached-global/src/test/java/org/apache/druid/server/lookup/namespace/cache/JdbcExtractionNamespaceTest.java
@@ -276,12 +276,7 @@ public class JdbcExtractionNamespaceTest
         }
     );
 
-    Closeable closeable = () -> {
-      if (!setupFuture.isDone() && !setupFuture.cancel(true) && !setupFuture.isDone()) {
-        throw new IOException("Unable to stop future");
-      }
-    };
-    try (final Closeable c = closeable) {
+    try (final Closeable ignore = () -> setupFuture.cancel(true)) {
       handleRef = setupFuture.get(10, TimeUnit.SECONDS);
     }
     Assert.assertNotNull(handleRef);
diff --git a/processing/src/main/java/org/apache/druid/guice/NullHandlingModule.java b/processing/src/main/java/org/apache/druid/guice/NullHandlingModule.java
index 9981980..b8be2e8 100644
--- a/processing/src/main/java/org/apache/druid/guice/NullHandlingModule.java
+++ b/processing/src/main/java/org/apache/druid/guice/NullHandlingModule.java
@@ -33,6 +33,5 @@ public class NullHandlingModule implements Module
   {
     JsonConfigProvider.bind(binder, "druid.generic", NullValueHandlingConfig.class);
     binder.requestStaticInjection(NullHandling.class);
-    binder.requestStaticInjection(NullHandling.class);
   }
 }
diff --git a/processing/src/main/java/org/apache/druid/jackson/DruidDefaultSerializersModule.java b/processing/src/main/java/org/apache/druid/jackson/DruidDefaultSerializersModule.java
index 55a3937..26de3ec 100644
--- a/processing/src/main/java/org/apache/druid/jackson/DruidDefaultSerializersModule.java
+++ b/processing/src/main/java/org/apache/druid/jackson/DruidDefaultSerializersModule.java
@@ -21,7 +21,6 @@ package org.apache.druid.jackson;
 
 import com.fasterxml.jackson.core.JsonGenerator;
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 import com.fasterxml.jackson.databind.JsonSerializer;
@@ -70,8 +69,7 @@ public class DruidDefaultSerializersModule extends SimpleModule
               DateTimeZone dateTimeZone,
               JsonGenerator jsonGenerator,
               SerializerProvider serializerProvider
-          )
-              throws IOException, JsonProcessingException
+          ) throws IOException
           {
             jsonGenerator.writeString(dateTimeZone.getID());
           }
@@ -83,7 +81,7 @@ public class DruidDefaultSerializersModule extends SimpleModule
         {
           @Override
           public void serialize(Sequence value, final JsonGenerator jgen, SerializerProvider provider)
-              throws IOException, JsonProcessingException
+              throws IOException
           {
             jgen.writeStartArray();
             value.accumulate(
@@ -113,7 +111,7 @@ public class DruidDefaultSerializersModule extends SimpleModule
         {
           @Override
           public void serialize(Yielder yielder, final JsonGenerator jgen, SerializerProvider provider)
-              throws IOException, JsonProcessingException
+              throws IOException
           {
             try {
               jgen.writeStartArray();
diff --git a/processing/src/main/java/org/apache/druid/jackson/JodaStuff.java b/processing/src/main/java/org/apache/druid/jackson/JodaStuff.java
index b7af383..1830ef9 100644
--- a/processing/src/main/java/org/apache/druid/jackson/JodaStuff.java
+++ b/processing/src/main/java/org/apache/druid/jackson/JodaStuff.java
@@ -20,7 +20,6 @@
 package org.apache.druid.jackson;
 
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.JsonToken;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -71,7 +70,7 @@ class JodaStuff
 
     @Override
     public Interval deserialize(JsonParser jsonParser, DeserializationContext deserializationContext)
-        throws IOException, JsonProcessingException
+        throws IOException
     {
       return Intervals.of(jsonParser.getText());
     }
@@ -94,8 +93,7 @@ class JodaStuff
     }
 
     @Override
-    public DateTime deserialize(JsonParser jp, DeserializationContext ctxt)
-        throws IOException, JsonProcessingException
+    public DateTime deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException
     {
       JsonToken t = jp.getCurrentToken();
       if (t == JsonToken.VALUE_NUMBER_INT) {
diff --git a/services/src/main/java/org/apache/druid/cli/DumpSegment.java b/services/src/main/java/org/apache/druid/cli/DumpSegment.java
index 06f90ad..66ebd54 100644
--- a/services/src/main/java/org/apache/druid/cli/DumpSegment.java
+++ b/services/src/main/java/org/apache/druid/cli/DumpSegment.java
@@ -343,50 +343,49 @@ public class DumpSegment extends GuiceRunnable
           @Override
           public Object apply(final OutputStream out)
           {
-            try {
-              final JsonGenerator jg = objectMapper.getFactory().createGenerator(out);
-
-              jg.writeStartObject();
-              jg.writeObjectField("bitmapSerdeFactory", bitmapSerdeFactory);
-              jg.writeFieldName("bitmaps");
+            try (final JsonGenerator jg = objectMapper.getFactory().createGenerator(out)) {
               jg.writeStartObject();
-
-              for (final String columnName : columnNames) {
-                final ColumnHolder columnHolder = index.getColumnHolder(columnName);
-                final BitmapIndex bitmapIndex = columnHolder.getBitmapIndex();
-
-                if (bitmapIndex == null) {
-                  jg.writeNullField(columnName);
-                } else {
-                  jg.writeFieldName(columnName);
-                  jg.writeStartObject();
-                  for (int i = 0; i < bitmapIndex.getCardinality(); i++) {
-                    String val = NullHandling.nullToEmptyIfNeeded(bitmapIndex.getValue(i));
-                    if (val != null) {
-                      final ImmutableBitmap bitmap = bitmapIndex.getBitmap(i);
-                      if (decompressBitmaps) {
-                        jg.writeStartArray();
-                        final IntIterator iterator = bitmap.iterator();
-                        while (iterator.hasNext()) {
-                          final int rowNum = iterator.next();
-                          jg.writeNumber(rowNum);
-                        }
-                        jg.writeEndArray();
-                      } else {
-                        byte[] bytes = bitmapSerdeFactory.getObjectStrategy().toBytes(bitmap);
-                        if (bytes != null) {
-                          jg.writeBinary(bytes);
+              {
+                jg.writeObjectField("bitmapSerdeFactory", bitmapSerdeFactory);
+                jg.writeFieldName("bitmaps");
+                jg.writeStartObject();
+                {
+                  for (final String columnName : columnNames) {
+                    final ColumnHolder columnHolder = index.getColumnHolder(columnName);
+                    final BitmapIndex bitmapIndex = columnHolder.getBitmapIndex();
+
+                    if (bitmapIndex == null) {
+                      jg.writeNullField(columnName);
+                    } else {
+                      jg.writeFieldName(columnName);
+                      jg.writeStartObject();
+                      for (int i = 0; i < bitmapIndex.getCardinality(); i++) {
+                        String val = NullHandling.nullToEmptyIfNeeded(bitmapIndex.getValue(i));
+                        if (val != null) {
+                          final ImmutableBitmap bitmap = bitmapIndex.getBitmap(i);
+                          if (decompressBitmaps) {
+                            jg.writeStartArray();
+                            final IntIterator iterator = bitmap.iterator();
+                            while (iterator.hasNext()) {
+                              final int rowNum = iterator.next();
+                              jg.writeNumber(rowNum);
+                            }
+                            jg.writeEndArray();
+                          } else {
+                            byte[] bytes = bitmapSerdeFactory.getObjectStrategy().toBytes(bitmap);
+                            if (bytes != null) {
+                              jg.writeBinary(bytes);
+                            }
+                          }
                         }
                       }
+                      jg.writeEndObject();
                     }
                   }
-                  jg.writeEndObject();
                 }
+                jg.writeEndObject();
               }
-
-              jg.writeEndObject();
               jg.writeEndObject();
-              jg.close();
             }
             catch (IOException e) {
               throw Throwables.propagate(e);


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org