diff --git a/.lgtm.yml b/.lgtm.yml
deleted file mode 100644
index a12bee6..0000000
--- a/.lgtm.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# Format of this file: https://lgtm.com/help/lgtm/lgtm.yml-configuration-file
-path_classifiers:
-  documentation:
-    - docs/dev/*
-  excludes:
-    - exec/java-exec/src/main/resources/rest/static/js/*.js
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5ByteDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5ByteDataWriter.java
index d66d6dd..94ce2da 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5ByteDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5ByteDataWriter.java
@@ -65,10 +65,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setInt(data[counter++]); //lgtm [java/index-out-of-bounds]
+      colWriter.setInt(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5DoubleDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5DoubleDataWriter.java
index 93b55c4..e619dfc 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5DoubleDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5DoubleDataWriter.java
@@ -63,10 +63,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setDouble(data[counter++]); // lgtm [java/index-out-of-bounds]
+      colWriter.setDouble(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5FloatDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5FloatDataWriter.java
index 418db01..769c57f 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5FloatDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5FloatDataWriter.java
@@ -63,10 +63,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setDouble(data[counter++]); // lgtm [java/index-out-of-bounds]
+      colWriter.setDouble(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5IntDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5IntDataWriter.java
index ef0de85..6eee89e 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5IntDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5IntDataWriter.java
@@ -64,10 +64,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setInt(data[counter++]); // lgtm [java/index-out-of-bounds]
+      colWriter.setInt(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5LongDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5LongDataWriter.java
index 91d218d..1fe51b0 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5LongDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5LongDataWriter.java
@@ -63,10 +63,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setLong(data[counter++]); // lgtm [java/index-out-of-bounds]
+      colWriter.setLong(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5SmallIntDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5SmallIntDataWriter.java
index 2f999bd..d355457 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5SmallIntDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5SmallIntDataWriter.java
@@ -65,10 +65,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setInt(data[counter++]); // lgtm [java/index-out-of-bounds]
+      colWriter.setInt(data[counter++]);
       return true;
     }
   }
diff --git a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5TimestampDataWriter.java b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5TimestampDataWriter.java
index bdec31a..bb2129e 100644
--- a/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5TimestampDataWriter.java
+++ b/contrib/format-hdf5/src/main/java/org/apache/drill/exec/store/hdf5/writers/HDF5TimestampDataWriter.java
@@ -42,10 +42,10 @@
 
   @Override
   public boolean write() {
-    if (counter > data.length) {
+    if (!hasNext()) {
       return false;
     } else {
-      colWriter.setTimestamp(Instant.ofEpochMilli(data[counter++])); // lgtm [java/index-out-of-bounds]
+      colWriter.setTimestamp(Instant.ofEpochMilli(data[counter++]));
       return true;
     }
   }
diff --git a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/TableFormatPluginConfig.java b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/TableFormatPluginConfig.java
index 0122254..ffd3d92 100644
--- a/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/TableFormatPluginConfig.java
+++ b/contrib/format-maprdb/src/main/java/org/apache/drill/exec/store/mapr/TableFormatPluginConfig.java
@@ -20,7 +20,7 @@
 import org.apache.drill.common.logical.FormatPluginConfig;
 
 public abstract class TableFormatPluginConfig implements FormatPluginConfig {
-  //lgtm [java/inconsistent-equals-and-hashcode]
+
   @Override
   public boolean equals(Object obj) {
     if (this == obj) {
diff --git a/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java b/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
index fb6a37b..dbddce3 100644
--- a/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
+++ b/contrib/storage-jdbc/src/main/java/org/apache/drill/exec/store/jdbc/JdbcStorageConfig.java
@@ -151,7 +151,7 @@
         );
         return new UsernamePasswordCredentials.Builder()
           .setCredentialsProvider(credentialsProvider)
-          .setQueryUser(userCredentials.getUserName()) // lgtm [java/dereferenced-value-may-be-null]
+          .setQueryUser(userCredentials.getUserName())
           .build();
       default:
         throw UserException.connectionError()
diff --git a/contrib/udfs/src/main/java/org/apache/drill/exec/udfs/CryptoFunctions.java b/contrib/udfs/src/main/java/org/apache/drill/exec/udfs/CryptoFunctions.java
index e704089..01fae08 100644
--- a/contrib/udfs/src/main/java/org/apache/drill/exec/udfs/CryptoFunctions.java
+++ b/contrib/udfs/src/main/java/org/apache/drill/exec/udfs/CryptoFunctions.java
@@ -285,7 +285,7 @@
         keyByteArray = java.util.Arrays.copyOf(keyByteArray, 16);
         javax.crypto.spec.SecretKeySpec secretKey = new javax.crypto.spec.SecretKeySpec(keyByteArray, "AES");
 
-        javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding"); // lgtm [java/weak-cryptographic-algorithm]
+        javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding");
         cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, secretKey);
         encryptedText = javax.xml.bind.DatatypeConverter.printBase64Binary(cipher.doFinal(input.getBytes(java.nio.charset.StandardCharsets.UTF_8)));
       } catch (Exception e) {
@@ -336,7 +336,7 @@
         keyByteArray = java.util.Arrays.copyOf(keyByteArray, 16);
         javax.crypto.spec.SecretKeySpec secretKey = new javax.crypto.spec.SecretKeySpec(keyByteArray, "AES");
 
-        javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding"); // lgtm [java/weak-cryptographic-algorithm]
+        javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("AES/ECB/PKCS5Padding");
         cipher.init(javax.crypto.Cipher.DECRYPT_MODE, secretKey);
         decryptedText = new String(cipher.doFinal(javax.xml.bind.DatatypeConverter.parseBase64Binary(input)));
       } catch (Exception e) {
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/CollectListMapsAggFunction.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/CollectListMapsAggFunction.java
index f88f0e4..c232edc 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/CollectListMapsAggFunction.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/CollectListMapsAggFunction.java
@@ -60,7 +60,7 @@
 
     for (int i = 0; i < inputs.length; i += 2) {
       org.apache.drill.exec.vector.complex.MapUtility.writeToMapFromReader(
-          inputs[i + 1], mapWriter, inputs[i].readText().toString(), "CollectListMapsAggFunction"); // lgtm [java/index-out-of-bounds]
+          inputs[i + 1], mapWriter, inputs[i].readText().toString(), "CollectListMapsAggFunction");
     }
     mapWriter.end();
   }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/SchemaFunctions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/SchemaFunctions.java
index d947a7b..78201dd 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/SchemaFunctions.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/SchemaFunctions.java
@@ -68,7 +68,7 @@
         // Janino cannot infer type
         org.apache.drill.exec.record.MaterializedField materializedField =
             (org.apache.drill.exec.record.MaterializedField) columns.get(columnName);
-        org.apache.drill.common.types.TypeProtos.MajorType type = inputs[i + 1].getType(); // lgtm [java/index-out-of-bounds]
+        org.apache.drill.common.types.TypeProtos.MajorType type = inputs[i + 1].getType();
         if (materializedField != null && !materializedField.getType().equals(type)) {
           org.apache.drill.common.types.TypeProtos.MinorType leastRestrictiveType =
               org.apache.drill.exec.resolver.TypeCastRules.getLeastRestrictiveType(
@@ -85,7 +85,7 @@
           columns.put(columnName, clone);
         } else {
           if (type.getMinorType() == org.apache.drill.common.types.TypeProtos.MinorType.MAP) {
-            columns.put(columnName, inputs[i + 1].getField()); // lgtm [java/index-out-of-bounds]
+            columns.put(columnName, inputs[i + 1].getField());
           } else {
             columns.put(columnName, org.apache.drill.exec.record.MaterializedField.create(columnName, type));
           }
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/record/DeadBuf.java b/exec/java-exec/src/main/java/org/apache/drill/exec/record/DeadBuf.java
index dcaf226..c3c3539 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/record/DeadBuf.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/record/DeadBuf.java
@@ -917,7 +917,7 @@
   }
 
   @Override
-  public boolean equals(Object arg0) { //lgtm [java/unchecked-cast-in-equals]
+  public boolean equals(Object arg0) {
     return false;
   }
 
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/CredentialResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/CredentialResources.java
index 3cfebd2..4de8843 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/CredentialResources.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/CredentialResources.java
@@ -269,7 +269,7 @@
   }
 
   private JsonResult message(String message, Object... args) {
-    return new JsonResult(String.format(message, args)); // lgtm [java/tainted-format-string]
+    return new JsonResult(String.format(message, args));
   }
 
   @XmlRootElement
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
index 5a32b11..71b12b9 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/OAuthRequests.java
@@ -179,7 +179,7 @@
   }
 
   private static JsonResult message(String message, Object... args) {
-    return new JsonResult(String.format(message, args));  // lgtm [java/tainted-format-string]
+    return new JsonResult(String.format(message, args));
   }
 
   /**
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
index 4c9f963..b41e392 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/server/rest/StorageResources.java
@@ -343,7 +343,7 @@
   }
 
   private JsonResult message(String message, Object... args) {
-    return new JsonResult(String.format(message, args));  // lgtm [java/tainted-format-string]
+    return new JsonResult(String.format(message, args));
   }
 
   private boolean isSupported(String format) {
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/record/metadata/AbstractPropertied.java b/exec/vector/src/main/java/org/apache/drill/exec/record/metadata/AbstractPropertied.java
index a04cdd9..31bf83a 100644
--- a/exec/vector/src/main/java/org/apache/drill/exec/record/metadata/AbstractPropertied.java
+++ b/exec/vector/src/main/java/org/apache/drill/exec/record/metadata/AbstractPropertied.java
@@ -120,7 +120,7 @@
   }
 
   @Override
-  public boolean equals(Object o) { //lgtm [java/unchecked-cast-in-equals]
+  public boolean equals(Object o) {
     if (o == this) {
       return true;
     }
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringArrayList.java b/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringArrayList.java
index 9af530f..19ff04b 100644
--- a/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringArrayList.java
+++ b/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringArrayList.java
@@ -23,7 +23,7 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 
 public class JsonStringArrayList<E> extends ArrayList<E> {
-//lgtm [java/inconsistent-equals-and-hashcode]
+
   private static ObjectMapper mapper;
 
   static {
diff --git a/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java b/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java
index 8536822..337858f 100644
--- a/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java
+++ b/exec/vector/src/main/java/org/apache/drill/exec/util/JsonStringHashMap.java
@@ -30,7 +30,7 @@
  * toString() method of the HashMap class to produce a JSON string instead
  */
 public class JsonStringHashMap<K, V> extends LinkedHashMap<K, V> {
-  // lgtm [java/inconsistent-equals-and-hashcode]
+
   private static final ObjectMapper mapper = new ObjectMapper()
       .registerModule(SerializationModule.getModule())
       .registerModule(new JodaModule());
diff --git a/pom.xml b/pom.xml
index ee011cc..dc8c45a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -700,7 +700,6 @@
               <exclude>**/clientlib/y2038/*.h</exclude> <!-- All the files here should have MIT License -->
               <exclude>**/resources/parquet/**/*</exclude>
               <exclude>**/.asf.yaml</exclude>
-              <exclude>**/.lgtm.yml</exclude>
               <exclude>**/*.woff2</exclude>
               <exclude>**/*.ks</exclude>
               <exclude>**/*.pcap</exclude>
