blob: f423cc4d8277509d45aa8344e322f71b7f1306a8 [file] [log] [blame]
# -*- Python -*-
# Pin to Java 1.7 to ensure broader compatibility for the Java bindings on
# Android. Note also that the android_library bazel rule currently enforces
# java 7
# https://github.com/bazelbuild/bazel/blob/6c1106b1a721516d3b3db54d2e1c31b44a76fbb1/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAndroidSemantics.java#L73
JAVA_VERSION_OPTS = [
"-source 7 -target 7",
]
# A more robust set of lint and errorprone checks when building
# Java source to improve code consistency.
XLINT_OPTS = [
"-Werror",
"-Xlint:all",
"-Xlint:-processing",
"-Xlint:-serial",
"-Xlint:-try",
"-Xlint:-classfile", # see b/32750402, go/javac-warnings#classfile
]
# The bazel errorprone plugin currently only enables default errorChecks
# https://github.com/bazelbuild/bazel/blob/97975603e5ff2247e6bb352e3afd27fea38f108d/src/java_tools/buildjar/java/com/google/devtools/build/buildjar/javac/plugins/errorprone/ErrorPronePlugin.java#L52
#
# Default errorChecks are errorprone checkers listed under ENABLED_ERRORS at
# https://github.com/google/error-prone/blob/c6f24bc387989158d99af28e7ae86755e56c5f38/core/src/main/java/com/google/errorprone/scanner/BuiltInCheckerSuppliers.java#L273
#
# Here we enable all available errorprone checks to converge on a consistent
# code style.
# https://github.com/google/error-prone/blob/c6f24bc387989158d99af28e7ae86755e56c5f38/core/src/main/java/com/google/errorprone/scanner/BuiltInCheckerSuppliers.java#L260
# This list is from ENABLED_WARNINGS in
# com/google/errorprone/scanner/BuiltInCheckerSuppliers.java
EP_ENABLED_WARNINGS = [
"-Xep:AmbiguousMethodReference:ERROR",
"-Xep:ArgumentSelectionDefectChecker:ERROR",
"-Xep:AssertEqualsArgumentOrderChecker:ERROR",
"-Xep:BadAnnotationImplementation:ERROR",
"-Xep:BadComparable:ERROR",
"-Xep:BoxedPrimitiveConstructor:ERROR",
"-Xep:CannotMockFinalClass:ERROR",
"-Xep:ClassCanBeStatic:ERROR",
"-Xep:ClassNewInstance:ERROR",
"-Xep:DefaultCharset:ERROR",
"-Xep:DoubleCheckedLocking:ERROR",
"-Xep:ElementsCountedInLoop:ERROR",
"-Xep:EqualsHashCode:ERROR",
"-Xep:EqualsIncompatibleType:ERROR",
"-Xep:Finally:ERROR",
"-Xep:FloatingPointLiteralPrecision:ERROR",
"-Xep:FragmentInjection:ERROR",
"-Xep:FragmentNotInstantiable:ERROR",
"-Xep:FunctionalInterfaceClash:ERROR",
"-Xep:FutureReturnValueIgnored:ERROR",
"-Xep:GetClassOnEnum:ERROR",
"-Xep:ImmutableAnnotationChecker:ERROR",
"-Xep:ImmutableEnumChecker:ERROR",
"-Xep:IncompatibleModifiers:ERROR",
"-Xep:InjectOnConstructorOfAbstractClass:ERROR",
"-Xep:InputStreamSlowMultibyteRead:ERROR",
"-Xep:IterableAndIterator:ERROR",
"-Xep:JavaLangClash:ERROR",
"-Xep:JUnit3FloatingPointComparisonWithoutDelta:ERROR",
"-Xep:JUnitAmbiguousTestClass:ERROR",
"-Xep:LiteralClassName:ERROR",
"-Xep:LogicalAssignment:ERROR",
"-Xep:MissingFail:ERROR",
"-Xep:MissingOverride:ERROR",
"-Xep:MutableConstantField:ERROR",
"-Xep:NamedParameters:ERROR",
"-Xep:NarrowingCompoundAssignment:ERROR",
"-Xep:NonAtomicVolatileUpdate:ERROR",
"-Xep:NonOverridingEquals:ERROR",
"-Xep:NullableConstructor:ERROR",
"-Xep:NullablePrimitive:ERROR",
"-Xep:NullableVoid:ERROR",
"-Xep:OperatorPrecedence:ERROR",
"-Xep:OverridesGuiceInjectableMethod:ERROR",
"-Xep:PreconditionsInvalidPlaceholder:ERROR",
"-Xep:ProtoFieldPreconditionsCheckNotNull:ERROR",
"-Xep:ReferenceEquality:ERROR",
"-Xep:RequiredModifiers:ERROR",
"-Xep:ShortCircuitBoolean:ERROR",
"-Xep:SimpleDateFormatConstant:ERROR",
"-Xep:StaticGuardedByInstance:ERROR",
"-Xep:SynchronizeOnNonFinalField:ERROR",
"-Xep:TruthConstantAsserts:ERROR",
"-Xep:TypeParameterShadowing:ERROR",
"-Xep:TypeParameterUnusedInFormals:ERROR",
"-Xep:UnsynchronizedOverridesSynchronized:ERROR",
"-Xep:URLEqualsHashCode:ERROR",
"-Xep:WaitNotInLoop:ERROR",
]
# This list is from DISABLED_CHECKS in
# com/google/errorprone/scanner/BuiltInCheckerSuppliers.java
EP_DISABLED_CHECKS = [
"-Xep:AutoFactoryAtInject:ERROR",
"-Xep:AssertFalse:ERROR",
"-Xep:AssistedInjectAndInjectOnConstructors:ERROR",
"-Xep:AssistedInjectAndInjectOnSameConstructor:ERROR",
"-Xep:BigDecimalLiteralDouble:ERROR",
"-Xep:BindingToUnqualifiedCommonType:ERROR",
"-Xep:ClassName:ERROR",
"-Xep:ComparisonContractViolated:ERROR",
"-Xep:ConstantField:ERROR",
"-Xep:ConstructorInvokesOverridable:ERROR",
# False positives, disabled
# "-Xep:ConstructorLeaksThis:ERROR",
"-Xep:DepAnn:ERROR",
"-Xep:DivZero:ERROR",
"-Xep:EmptyIfStatement:ERROR",
"-Xep:EmptySetMultibindingContributions:ERROR",
"-Xep:EmptyTopLevelDeclaration:ERROR",
"-Xep:ExpectedExceptionChecker:ERROR",
"-Xep:HardCodedSdCardPath:ERROR",
"-Xep:InjectedConstructorAnnotations:ERROR",
"-Xep:InsecureCipherMode:ERROR",
"-Xep:InvalidTargetingOnScopingAnnotation:ERROR",
"-Xep:IterablePathParameter:ERROR",
"-Xep:JMockTestWithoutRunWithOrRuleAnnotation:ERROR",
"-Xep:JavaxInjectOnFinalField:ERROR",
"-Xep:LockMethodChecker:ERROR",
"-Xep:LongLiteralLowerCaseSuffix:ERROR",
"-Xep:MethodCanBeStatic:ERROR",
"-Xep:MissingDefault:ERROR",
"-Xep:MixedArrayDimensions:ERROR",
"-Xep:MoreThanOneQualifier:ERROR",
"-Xep:MultiVariableDeclaration:ERROR",
"-Xep:MultipleTopLevelClasses:ERROR",
"-Xep:NoAllocationChecker:ERROR",
"-Xep:NonCanonicalStaticMemberImport:ERROR",
"-Xep:NumericEquality:ERROR",
"-Xep:PackageLocation:ERROR",
"-Xep:PrimitiveArrayPassedToVarargsMethod:ERROR",
"-Xep:PrivateConstructorForUtilityClass:ERROR",
"-Xep:PrivateConstructorForNoninstantiableModule:ERROR",
"-Xep:ProtoStringFieldReferenceEquality:ERROR",
"-Xep:QualifierOrScopeOnInjectMethod:ERROR",
"-Xep:QualifierWithTypeUse:ERROR",
"-Xep:RedundantThrows:ERROR",
"-Xep:RemoveUnusedImports:ERROR",
"-Xep:ScopeAnnotationOnInterfaceOrAbstractClass:ERROR",
"-Xep:ScopeOrQualifierAnnotationRetention:ERROR",
"-Xep:StaticQualifiedUsingExpression:ERROR",
"-Xep:StaticOrDefaultInterfaceMethod:ERROR",
"-Xep:StringEquality:ERROR",
"-Xep:TestExceptionChecker:ERROR",
# TODO: stylistic changes in code
# "-Xep:ThrowsUncheckedException:ERROR",
# "-Xep:UngroupedOverloads:ERROR",
"-Xep:UnlockMethodChecker:ERROR",
"-Xep:UnnecessaryDefaultInEnumSwitch:ERROR",
"-Xep:UnnecessaryStaticImport:ERROR",
"-Xep:UseBinds:ERROR",
"-Xep:VarChecker:ERROR",
"-Xep:WildcardImport:ERROR",
"-Xep:WrongParameterPackage:ERROR",
]
EP_OPTS = EP_ENABLED_WARNINGS + EP_DISABLED_CHECKS
JAVACOPTS = JAVA_VERSION_OPTS + XLINT_OPTS + EP_OPTS