From 148f5ddfa260adcb2d62125e518a3926b5424c5a Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Tue, 1 Sep 2020 15:53:06 -0700 Subject: [PATCH 01/10] Add errorprone to lucene/solr core --- build.gradle | 1 + lucene/core/build.gradle | 7 +++++++ solr/core/build.gradle | 7 +++++++ versions.props | 1 + 4 files changed, 16 insertions(+) diff --git a/build.gradle b/build.gradle index 6d6ee2dadf9e..a82fbad30d18 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') diff --git a/lucene/core/build.gradle b/lucene/core/build.gradle index 989c57f09357..d25a4523f62a 100644 --- a/lucene/core/build.gradle +++ b/lucene/core/build.gradle @@ -16,10 +16,17 @@ */ apply plugin: 'java-library' +apply plugin: 'net.ltgt.errorprone' description = 'Lucene core library' +tasks.withType(JavaCompile) { + options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] +} + dependencies { + errorprone("com.google.errorprone:error_prone_core:2.4.0") + testImplementation project(':lucene:codecs') testImplementation project(':lucene:test-framework') } diff --git a/solr/core/build.gradle b/solr/core/build.gradle index 8c7bcc9008c0..be817e1bdfac 100644 --- a/solr/core/build.gradle +++ b/solr/core/build.gradle @@ -17,10 +17,17 @@ apply plugin: 'java-library' +apply plugin: 'net.ltgt.errorprone' description = 'Apache Solr Core' +tasks.withType(JavaCompile) { + options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] +} + dependencies { + errorprone("com.google.errorprone:error_prone_core:2.4.0") + api project(':lucene:core') api project(':lucene:analysis:common') api project(':lucene:analysis:kuromoji') diff --git a/versions.props b/versions.props index 8c25e307d82d..429f53dc4a9c 100644 --- a/versions.props +++ b/versions.props @@ -103,3 +103,4 @@ org.tukaani:xz=1.8 org.xerial.snappy:snappy-java=1.1.7.6 ua.net.nlp:morfologik-ukrainian-search=4.9.1 xerces:xercesImpl=2.12.0 +net.ltgt.errorprone=1.2.1 From e2eb87fc77e287d8eb5cc76fe60d94291e6b55d0 Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Wed, 2 Sep 2020 19:48:15 -0700 Subject: [PATCH 02/10] Move config to a script file --- build.gradle | 1 + gradle/validation/error-prone.gradle | 30 ++++++++++++++++++++++++++++ lucene/core/build.gradle | 7 ------- solr/core/build.gradle | 6 ------ 4 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 gradle/validation/error-prone.gradle diff --git a/build.gradle b/build.gradle index a82fbad30d18..6cc30e666be5 100644 --- a/build.gradle +++ b/build.gradle @@ -128,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/validation/error-prone.gradle b/gradle/validation/error-prone.gradle new file mode 100644 index 000000000000..fa04244713f5 --- /dev/null +++ b/gradle/validation/error-prone.gradle @@ -0,0 +1,30 @@ +/* + * 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. + */ + +configure([project(":lucene:core")]) { + apply plugin: 'net.ltgt.errorprone' + + plugins.withType(JavaPlugin) { + dependencies { + errorprone("com.google.errorprone:error_prone_core:2.4.0") + } + + tasks.withType(JavaCompile) { + options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] + } + } +} diff --git a/lucene/core/build.gradle b/lucene/core/build.gradle index d25a4523f62a..989c57f09357 100644 --- a/lucene/core/build.gradle +++ b/lucene/core/build.gradle @@ -16,17 +16,10 @@ */ apply plugin: 'java-library' -apply plugin: 'net.ltgt.errorprone' description = 'Lucene core library' -tasks.withType(JavaCompile) { - options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] -} - dependencies { - errorprone("com.google.errorprone:error_prone_core:2.4.0") - testImplementation project(':lucene:codecs') testImplementation project(':lucene:test-framework') } diff --git a/solr/core/build.gradle b/solr/core/build.gradle index be817e1bdfac..b6f1f45eedab 100644 --- a/solr/core/build.gradle +++ b/solr/core/build.gradle @@ -17,16 +17,10 @@ apply plugin: 'java-library' -apply plugin: 'net.ltgt.errorprone' description = 'Apache Solr Core' -tasks.withType(JavaCompile) { - options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] -} - dependencies { - errorprone("com.google.errorprone:error_prone_core:2.4.0") api project(':lucene:core') api project(':lucene:analysis:common') From 9b882fbb28c1136cca45adb9f1c03b5ae6d731dd Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Wed, 2 Sep 2020 19:51:43 -0700 Subject: [PATCH 03/10] remove version.props entry --- solr/core/build.gradle | 1 - versions.props | 1 - 2 files changed, 2 deletions(-) diff --git a/solr/core/build.gradle b/solr/core/build.gradle index b6f1f45eedab..8c7bcc9008c0 100644 --- a/solr/core/build.gradle +++ b/solr/core/build.gradle @@ -21,7 +21,6 @@ apply plugin: 'java-library' description = 'Apache Solr Core' dependencies { - api project(':lucene:core') api project(':lucene:analysis:common') api project(':lucene:analysis:kuromoji') diff --git a/versions.props b/versions.props index 429f53dc4a9c..8c25e307d82d 100644 --- a/versions.props +++ b/versions.props @@ -103,4 +103,3 @@ org.tukaani:xz=1.8 org.xerial.snappy:snappy-java=1.1.7.6 ua.net.nlp:morfologik-ukrainian-search=4.9.1 xerces:xercesImpl=2.12.0 -net.ltgt.errorprone=1.2.1 From 006f657d26301ceae3d9d9585ad04317190da2d0 Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Thu, 3 Sep 2020 14:25:12 -0700 Subject: [PATCH 04/10] disable all warnings explicitly --- gradle/validation/error-prone.gradle | 114 ++++++++++++++++++++++++--- 1 file changed, 103 insertions(+), 11 deletions(-) diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle index fa04244713f5..6a5422eaba95 100644 --- a/gradle/validation/error-prone.gradle +++ b/gradle/validation/error-prone.gradle @@ -15,16 +15,108 @@ * limitations under the License. */ -configure([project(":lucene:core")]) { - apply plugin: 'net.ltgt.errorprone' - - plugins.withType(JavaPlugin) { - dependencies { - errorprone("com.google.errorprone:error_prone_core:2.4.0") - } - - tasks.withType(JavaCompile) { - options.errorprone.errorproneArgs = ['-Xep:InvalidBlockTag:OFF', '-Xep:MissingSummary:OFF', '-Xep:UnusedVariable:OFF'] +allprojects { prj -> + plugins.withId("java", { + prj.apply plugin: 'net.ltgt.errorprone' + plugins.withType(JavaPlugin) { + dependencies { + errorprone("com.google.errorprone:error_prone_core:2.4.0") + } + tasks.withType(JavaCompile) { + options.errorprone.errorproneArgs = [ + '-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'] + } } - } + }) } From c2c4aea3df88f24bba138e19c03f5fd1a3d1b145 Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Thu, 3 Sep 2020 14:33:07 -0700 Subject: [PATCH 05/10] fix for precommit --- gradle/validation/error-prone.gradle | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle index 6a5422eaba95..ec482b0e766d 100644 --- a/gradle/validation/error-prone.gradle +++ b/gradle/validation/error-prone.gradle @@ -24,6 +24,30 @@ allprojects { prj -> } tasks.withType(JavaCompile) { 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', From aedae139eb66995b4c7fe5ae6d7216156e56d58e Mon Sep 17 00:00:00 2001 From: Varun Thacker Date: Thu, 3 Sep 2020 15:55:28 -0700 Subject: [PATCH 06/10] include erorprone annotations --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6cc30e666be5..057d3dcba773 100644 --- a/build.gradle +++ b/build.gradle @@ -128,6 +128,8 @@ apply from: file('gradle/ide/intellij-idea.gradle') apply from: file('gradle/ide/eclipse.gradle') // Validation tasks +apply from: file('gradle/hacks/findbugs.gradle') +// run findbugs.gradle before error-prone.gradle to ensure we inherit compile time deps apply from: file('gradle/validation/error-prone.gradle') apply from: file('gradle/validation/precommit.gradle') apply from: file('gradle/validation/forbidden-apis.gradle') @@ -174,7 +176,6 @@ apply from: file('gradle/documentation/changes-to-html.gradle') apply from: file('gradle/documentation/markdown.gradle') apply from: file('gradle/documentation/render-javadoc.gradle') -apply from: file('gradle/hacks/findbugs.gradle') apply from: file('gradle/hacks/gradle.gradle') apply from: file('gradle/hacks/hashmapAssertions.gradle') From 1942d4dbabfd8c5213eeb94eb5bb353de6349ff5 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 4 Sep 2020 09:27:08 +0200 Subject: [PATCH 07/10] Fixes. --- build.gradle | 3 +- gradle/validation/error-prone.gradle | 254 ++++++++++++++------------- versions.lock | 2 +- versions.props | 1 + 4 files changed, 131 insertions(+), 129 deletions(-) diff --git a/build.gradle b/build.gradle index 057d3dcba773..6cc30e666be5 100644 --- a/build.gradle +++ b/build.gradle @@ -128,8 +128,6 @@ apply from: file('gradle/ide/intellij-idea.gradle') apply from: file('gradle/ide/eclipse.gradle') // Validation tasks -apply from: file('gradle/hacks/findbugs.gradle') -// run findbugs.gradle before error-prone.gradle to ensure we inherit compile time deps apply from: file('gradle/validation/error-prone.gradle') apply from: file('gradle/validation/precommit.gradle') apply from: file('gradle/validation/forbidden-apis.gradle') @@ -176,6 +174,7 @@ apply from: file('gradle/documentation/changes-to-html.gradle') apply from: file('gradle/documentation/markdown.gradle') apply from: file('gradle/documentation/render-javadoc.gradle') +apply from: file('gradle/hacks/findbugs.gradle') apply from: file('gradle/hacks/gradle.gradle') apply from: file('gradle/hacks/hashmapAssertions.gradle') diff --git a/gradle/validation/error-prone.gradle b/gradle/validation/error-prone.gradle index ec482b0e766d..12b1c5b997b7 100644 --- a/gradle/validation/error-prone.gradle +++ b/gradle/validation/error-prone.gradle @@ -16,131 +16,133 @@ */ allprojects { prj -> - plugins.withId("java", { - prj.apply plugin: 'net.ltgt.errorprone' - plugins.withType(JavaPlugin) { - dependencies { - errorprone("com.google.errorprone:error_prone_core:2.4.0") - } - tasks.withType(JavaCompile) { - 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', + plugins.withType(JavaPlugin) { + prj.apply plugin: 'net.ltgt.errorprone' - '-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'] - } - } - }) + dependencies { + errorprone("com.google.errorprone:error_prone_core") + } + + tasks.withType(JavaCompile) { task -> + 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/versions.lock b/versions.lock index 31b2ae55168c..8ac95dea82f1 100644 --- a/versions.lock +++ b/versions.lock @@ -22,7 +22,7 @@ com.github.virtuald:curvesapi:1.06 (1 constraints: db04f530) com.github.zafarkhaja:java-semver:0.9.0 (1 constraints: 0b050636) com.google.code.findbugs:annotations:3.0.1 (1 constraints: 0605fb35) com.google.code.findbugs:jsr305:3.0.2 (2 constraints: cd195721) -com.google.errorprone:error_prone_annotations:2.1.3 (1 constraints: 180aebb4) +com.google.errorprone:error_prone_annotations:2.4.0 (2 constraints: 1f0fd486) com.google.guava:guava:25.1-jre (1 constraints: 4a06b047) com.google.j2objc:j2objc-annotations:1.1 (1 constraints: b609eba0) com.google.protobuf:protobuf-java:3.11.0 (1 constraints: 3705383b) diff --git a/versions.props b/versions.props index 8c25e307d82d..39a4f175666b 100644 --- a/versions.props +++ b/versions.props @@ -8,6 +8,7 @@ com.fasterxml.jackson*:*=2.10.1 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 From 2dd9a1b0a42b5339fe1deffb991caa3124c1bb38 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 4 Sep 2020 10:26:39 +0200 Subject: [PATCH 08/10] Add a property to run javac without -Werror - this is helpful to get all the warnings, otherwise it stops on the first one. --- gradle/defaults-java.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gradle/defaults-java.gradle b/gradle/defaults-java.gradle index 3614ee811e95..9e1b67ca9809 100644 --- a/gradle/defaults-java.gradle +++ b/gradle/defaults-java.gradle @@ -52,8 +52,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" + } } } } From 3fc25efcd3763a0d68f7185a7a43b78f7162e76a Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 4 Sep 2020 10:27:44 +0200 Subject: [PATCH 09/10] Add error prone annotations to solr:contrib:analytics so that javac doesn't complain about missing types. --- gradle/hacks/findbugs.gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gradle/hacks/findbugs.gradle b/gradle/hacks/findbugs.gradle index 06a6c76f694f..f228738936ef 100644 --- a/gradle/hacks/findbugs.gradle +++ b/gradle/hacks/findbugs.gradle @@ -16,13 +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:test-framework")]) { + project(":solr:test-framework"), + project(":solr:contrib:analytics")]) { plugins.withType(JavaPlugin) { dependencies { // Use versionless variants because these libraries are in versions.lock. From 4e12bb3131df7d08deb57e572255857c1b48dff8 Mon Sep 17 00:00:00 2001 From: Dawid Weiss Date: Fri, 4 Sep 2020 10:28:34 +0200 Subject: [PATCH 10/10] Add an example error_prone suppression on legitimate reference comparison. error_prone uses built-in SuppressWarnings (which is kind of neat). --- .../core/src/java/org/apache/lucene/analysis/CharArrayMap.java | 1 + 1 file changed, 1 insertion(+) 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 cad339b380fa..ac88886aac7d 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 void clear() { * @throws NullPointerException * if the given map is null. */ + @SuppressWarnings("ReferenceEquality") public static CharArrayMap unmodifiableMap(CharArrayMap map) { if (map == null) throw new NullPointerException("Given map is null");