You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by th...@apache.org on 2020/09/14 16:38:32 UTC
[lucene-solr] 14/39: LUCENE-9497: Integerate Error Prone ( Static
Analysis Tool ) during compilation (#1816)
This is an automated email from the ASF dual-hosted git repository.
thelabdude pushed a commit to branch reference_impl_gradle_updates
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 17a3ba723ae0041e608103523201a381d4ebc2e8
Author: Varun Thacker <vt...@users.noreply.github.com>
AuthorDate: Mon Sep 7 14:42:48 2020 -0700
LUCENE-9497: Integerate Error Prone ( Static Analysis Tool ) during compilation (#1816)
LUCENE-9497: Integrate Error Prone, a static analysis tool during compilation
---
build.gradle | 2 +
gradle/defaults-java.gradle | 5 +-
gradle/hacks/findbugs.gradle | 6 +-
gradle/validation/error-prone.gradle | 149 +++++++++++++++++++++
lucene/CHANGES.txt | 5 +
.../org/apache/lucene/analysis/CharArrayMap.java | 1 +
versions.props | 1 +
7 files changed, 166 insertions(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index d20deeb..f01045b 100644
--- a/build.gradle
+++ b/build.gradle
@@ -24,6 +24,7 @@ plugins {
id "org.owasp.dependencycheck" version "5.3.0"
id 'de.thetaphi.forbiddenapis' version '3.0.1' apply false
id "de.undercouch.download" version "4.0.2" apply false
+ id "net.ltgt.errorprone" version "1.2.1" apply false
}
apply from: file('gradle/defaults.gradle')
@@ -127,6 +128,7 @@ apply from: file('gradle/ide/intellij-idea.gradle')
apply from: file('gradle/ide/eclipse.gradle')
// Validation tasks
+apply from: file('gradle/validation/error-prone.gradle')
apply from: file('gradle/validation/precommit.gradle')
apply from: file('gradle/validation/forbidden-apis.gradle')
apply from: file('gradle/validation/jar-checks.gradle')
diff --git a/gradle/defaults-java.gradle b/gradle/defaults-java.gradle
index e739a19..9495268 100644
--- a/gradle/defaults-java.gradle
+++ b/gradle/defaults-java.gradle
@@ -39,8 +39,11 @@ allprojects {
"-Xdoclint:-missing",
"-Xdoclint:-accessibility",
"-proc:none", // proc:none was added because of LOG4J2-1925 / JDK-8186647
- "-Werror",
]
+
+ if (propertyOrDefault("javac.failOnWarnings", true).toBoolean()) {
+ options.compilerArgs += "-Werror"
+ }
}
}
}
diff --git a/gradle/hacks/findbugs.gradle b/gradle/hacks/findbugs.gradle
index bdbdb7e..f228738 100644
--- a/gradle/hacks/findbugs.gradle
+++ b/gradle/hacks/findbugs.gradle
@@ -16,12 +16,14 @@
*/
// See LUCENE-9411. This hack adds compile-time only dependencies
-// on findbugs annotations. Otherwise javac generates odd warnings about missing
+// on findbugs and error_prone annotations. Otherwise javac generates odd warnings about missing
// type information.
configure([project(":solr:core"),
project(":solr:solrj"),
- project(":solr:contrib:prometheus-exporter")]) {
+ project(":solr:contrib:prometheus-exporter"),
+ project(":solr:test-framework"),
+ project(":solr:contrib:analytics")]) {
plugins.withType(JavaPlugin) {
dependencies {
// Use versionless variants because these libraries are in versions.lock.
diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle
new file mode 100644
index 0000000..d91fbb4
--- /dev/null
+++ b/gradle/validation/error-prone.gradle
@@ -0,0 +1,149 @@
+/*
+ * 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.
+ */
+
+allprojects { prj ->
+ plugins.withType(JavaPlugin) {
+ prj.apply plugin: 'net.ltgt.errorprone'
+
+ dependencies {
+ errorprone("com.google.errorprone:error_prone_core")
+ }
+
+ tasks.withType(JavaCompile) { task ->
+ options.errorprone.disableWarningsInGeneratedCode = true
+ options.errorprone.errorproneArgs = [
+ // test
+ '-Xep:ExtendingJUnitAssert:OFF',
+ '-Xep:UseCorrectAssertInTests:OFF',
+ '-Xep:DefaultPackage:OFF',
+ '-Xep:FloatingPointLiteralPrecision:OFF',
+ '-Xep:CatchFail:OFF',
+ '-Xep:TryFailThrowable:OFF',
+ '-Xep:MathAbsoluteRandom:OFF',
+ '-Xep:AssertionFailureIgnored:OFF',
+ '-Xep:JUnit4TestNotRun:OFF',
+ '-Xep:FallThrough:OFF',
+ '-Xep:CatchAndPrintStackTrace:OFF',
+ '-Xep:ToStringReturnsNull:OFF',
+ '-Xep:ArrayAsKeyOfSetOrMap:OFF',
+ '-Xep:StaticAssignmentInConstructor:OFF',
+ '-Xep:SelfAssignment:OFF',
+ '-Xep:InvalidPatternSyntax:OFF',
+ '-Xep:MissingFail:OFF',
+ '-Xep:LossyPrimitiveCompare:OFF',
+ '-Xep:ComparableType:OFF',
+ '-Xep:InfiniteRecursion:OFF',
+ '-Xep:MisusedDayOfYear:OFF',
+ '-Xep:FloatingPointAssertionWithinEpsilon:OFF',
+
+ '-Xep:ThrowNull:OFF',
+ '-Xep:StaticGuardedByInstance:OFF',
+ '-Xep:ArrayHashCode:OFF',
+ '-Xep:ArrayEquals:OFF',
+ '-Xep:IdentityBinaryExpression:OFF',
+ '-Xep:ComplexBooleanConstant:OFF',
+ '-Xep:ComplexBooleanConstant:OFF',
+ '-Xep:StreamResourceLeak:OFF',
+ '-Xep:UnnecessaryLambda:OFF',
+ '-Xep:ObjectToString:OFF',
+ '-Xep:URLEqualsHashCode:OFF',
+ '-Xep:DoubleBraceInitialization:OFF',
+ '-Xep:ShortCircuitBoolean:OFF',
+ '-Xep:InputStreamSlowMultibyteRead:OFF',
+ '-Xep:NonCanonicalType:OFF',
+ '-Xep:CollectionIncompatibleType:OFF',
+ '-Xep:TypeParameterShadowing:OFF',
+ '-Xep:ThreadJoinLoop:OFF',
+ '-Xep:MutableConstantField:OFF',
+ '-Xep:ReturnValueIgnored:OFF',
+ '-Xep:CollectionIncompatibleType:OFF',
+ '-Xep:SameNameButDifferent:OFF',
+ '-Xep:InvalidParam:OFF',
+ '-Xep:CompareToZero:OFF',
+ '-Xep:DoubleCheckedLocking:OFF',
+ '-Xep:BadShiftAmount:OFF',
+ '-Xep:CollectionUndefinedEquality:OFF',
+ '-Xep:UnescapedEntity:OFF',
+ '-Xep:BoxedPrimitiveEquality:OFF',
+ '-Xep:LogicalAssignment:OFF',
+ '-Xep:DoubleCheckedLocking:OFF',
+ '-Xep:AmbiguousMethodReference:OFF',
+ '-Xep:FormatString:OFF',
+ '-Xep:InstanceOfAndCastMatchWrongType:OFF',
+ '-Xep:ModifyCollectionInEnhancedForLoop:OFF',
+ '-Xep:JavaLangClash:OFF',
+ '-Xep:TypeParameterUnusedInFormals:OFF',
+ '-Xep:UnusedNestedClass:OFF',
+ '-Xep:OverrideThrowableToString:OFF',
+ '-Xep:FutureReturnValueIgnored:OFF',
+ '-Xep:BadInstanceof:OFF',
+ '-Xep:UnusedNestedClass:OFF',
+ '-Xep:OverrideThrowableToString:OFF',
+ '-Xep:EqualsIncompatibleType:OFF',
+ '-Xep:ByteBufferBackingArray:OFF',
+ '-Xep:ByteBufferBackingArray:OFF',
+ '-Xep:UnusedMethod:OFF',
+ '-Xep:ObjectsHashCodePrimitive:OFF',
+ '-Xep:ObjectsHashCodePrimitive:OFF',
+ '-Xep:UnnecessaryAnonymousClass:OFF',
+ '-Xep:BoxedPrimitiveConstructor:OFF',
+ '-Xep:ArgumentSelectionDefectChecker:OFF',
+ '-Xep:StringSplitter:OFF',
+ '-Xep:MixedMutabilityReturnType:OFF',
+ '-Xep:EqualsUnsafeCast:OFF',
+ '-Xep:OperatorPrecedence:OFF',
+ '-Xep:HidingField:OFF',
+ '-Xep:ThreadPriorityCheck:OFF',
+ '-Xep:InlineFormatString:OFF',
+ '-Xep:EqualsUnsafeCast:OFF',
+ '-Xep:UnsynchronizedOverridesSynchronized:OFF',
+ '-Xep:OperatorPrecedence:OFF',
+ '-Xep:ArrayToString:OFF',
+ '-Xep:ClassCanBeStatic:OFF',
+ '-Xep:InvalidInlineTag:OFF',
+ '-Xep:EmptyCatch:OFF',
+ '-Xep:UnnecessaryParentheses:OFF',
+ '-Xep:AlmostJavadoc:OFF',
+ '-Xep:Finally:OFF',
+ '-Xep:ImmutableEnumChecker:OFF',
+ '-Xep:NonAtomicVolatileUpdate:OFF',
+ '-Xep:MutablePublicArray:OFF',
+ '-Xep:LockNotBeforeTry:OFF',
+ '-Xep:WaitNotInLoop:OFF',
+ '-Xep:UndefinedEquals:OFF',
+ '-Xep:JdkObsolete:OFF',
+ '-Xep:NarrowingCompoundAssignment:OFF',
+ '-Xep:InconsistentCapitalization:OFF',
+ '-Xep:IntLongMath:OFF',
+ '-Xep:SynchronizeOnNonFinalField:OFF',
+ '-Xep:ThreadLocalUsage:OFF',
+ '-Xep:ProtectedMembersInFinalClass:OFF',
+ '-Xep:BadImport:OFF',
+ '-Xep:InconsistentHashCode:OFF',
+ '-Xep:MissingOverride:OFF',
+ '-Xep:EqualsGetClass:OFF',
+ '-Xep:PublicConstructorForAbstractClass:OFF',
+ '-Xep:EscapedEntity:OFF',
+ '-Xep:ModifiedButNotUsed:OFF',
+ '-Xep:ReferenceEquality:OFF',
+ '-Xep:InvalidBlockTag:OFF',
+ '-Xep:MissingSummary:OFF',
+ '-Xep:UnusedVariable:OFF'
+ ]
+ }
+ }
+}
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index d8bdf7f..6418f4d 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -255,6 +255,11 @@ Documentation
* LUCENE-9424: Add a performance warning to AttributeSource.captureState javadocs (Haoyu Zhai)
+Other
+---------------------
+
+* LUCENE-9497: Integrate Error Prone, a static analysis tool during compilation (Dawid Weiss, Varun Thacker)
+
Other
---------------------
diff --git a/lucene/core/src/java/org/apache/lucene/analysis/CharArrayMap.java b/lucene/core/src/java/org/apache/lucene/analysis/CharArrayMap.java
index cad339b..ac88886 100644
--- a/lucene/core/src/java/org/apache/lucene/analysis/CharArrayMap.java
+++ b/lucene/core/src/java/org/apache/lucene/analysis/CharArrayMap.java
@@ -523,6 +523,7 @@ public class CharArrayMap<V> extends AbstractMap<Object,V> {
* @throws NullPointerException
* if the given map is <code>null</code>.
*/
+ @SuppressWarnings("ReferenceEquality")
public static <V> CharArrayMap<V> unmodifiableMap(CharArrayMap<V> map) {
if (map == null)
throw new NullPointerException("Given map is null");
diff --git a/versions.props b/versions.props
index 5477dfd..dea7c34 100644
--- a/versions.props
+++ b/versions.props
@@ -11,6 +11,7 @@ com.fasterxml.woodstox:woodstox-core:6.0.3
com.github.ben-manes.caffeine:caffeine=2.8.4
com.github.virtuald:curvesapi=1.06
com.github.zafarkhaja:java-semver=0.9.0
+com.google.errorprone:*=2.4.0
com.google.guava:guava=25.1-jre
com.google.protobuf:protobuf-java=3.11.0
com.google.re2j:re2j=1.2