1// Copyright 2017 Google Inc. All rights reserved. 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package error_prone 16 17import ( 18 "android/soong/java/config" 19) 20 21func init() { 22 // These values are set into build/soong/java/config/config.go so that soong doesn't have any 23 // references to external/error_prone, which may not always exist. 24 config.ErrorProneClasspath = []string{ 25 "external/error_prone/error_prone/error_prone_core-2.3.2-with-dependencies.jar", 26 "external/error_prone/error_prone/error_prone_annotations-2.4.0.jar", 27 "external/error_prone/error_prone/error_prone_type_annotations-2.4.0.jar", 28 "external/error_prone/checkerframework/dataflow-2.5.3.jar", 29 "external/error_prone/checkerframework/javacutil-2.5.3.jar", 30 "external/error_prone/jFormatString/jFormatString-3.0.0.jar", 31 } 32 33 // The checks that are fatal to the build. 34 config.ErrorProneChecksError = []string{ 35 // Errorprone default severity ERROR 36 "-Xep:AndroidInjectionBeforeSuper:ERROR", 37 "-Xep:ArrayFillIncompatibleType:ERROR", 38 "-Xep:AsyncCallableReturnsNull:ERROR", 39 "-Xep:AsyncFunctionReturnsNull:ERROR", 40 "-Xep:AutoValueConstructorOrderChecker:ERROR", 41 "-Xep:BundleDeserializationCast:ERROR", 42 "-Xep:ChainingConstructorIgnoresParameter:ERROR", 43 "-Xep:CheckReturnValue:ERROR", 44 "-Xep:CollectionIncompatibleType:ERROR", 45 "-Xep:ComparingThisWithNull:ERROR", 46 "-Xep:ComparisonOutOfRange:ERROR", 47 "-Xep:CompatibleWithAnnotationMisuse:ERROR", 48 "-Xep:CompileTimeConstant:ERROR", 49 "-Xep:ConstantOverflow:ERROR", 50 "-Xep:DaggerProvidesNull:ERROR", 51 "-Xep:DeadException:ERROR", 52 "-Xep:DeadThread:ERROR", 53 "-Xep:DoNotCall:ERROR", 54 "-Xep:EqualsNaN:ERROR", 55 "-Xep:EqualsWrongThing:ERROR", 56 "-Xep:ForOverride:ERROR", 57 "-Xep:FormatStringAnnotation:ERROR", 58 "-Xep:FunctionalInterfaceMethodChanged:ERROR", 59 "-Xep:FuturesGetCheckedIllegalExceptionType:ERROR", 60 "-Xep:GuiceAssistedInjectScoping:ERROR", 61 "-Xep:GuiceAssistedParameters:ERROR", 62 "-Xep:GuiceInjectOnFinalField:ERROR", 63 "-Xep:Immutable:ERROR", 64 "-Xep:ImmutableModification:ERROR", 65 "-Xep:IncompatibleArgumentType:ERROR", 66 "-Xep:IndexOfChar:ERROR", 67 "-Xep:InexactVarargsConditional:ERROR", 68 "-Xep:InfiniteRecursion:ERROR", 69 "-Xep:InjectMoreThanOneScopeAnnotationOnClass:ERROR", 70 "-Xep:InjectOnMemberAndConstructor:ERROR", 71 "-Xep:InvalidPatternSyntax:ERROR", 72 "-Xep:IsInstanceOfClass:ERROR", 73 "-Xep:JUnit3TestNotRun:ERROR", 74 "-Xep:JUnit4ClassAnnotationNonStatic:ERROR", 75 "-Xep:JUnit4SetUpNotRun:ERROR", 76 "-Xep:JUnit4TearDownNotRun:ERROR", 77 "-Xep:JUnit4TestNotRun:ERROR", 78 "-Xep:JUnitAssertSameCheck:ERROR", 79 "-Xep:JavaxInjectOnAbstractMethod:ERROR", 80 "-Xep:LiteByteStringUtf8:ERROR", 81 "-Xep:LoopConditionChecker:ERROR", 82 "-Xep:MissingTestCall:ERROR", 83 "-Xep:MockitoCast:ERROR", 84 "-Xep:MockitoUsage:ERROR", 85 "-Xep:MoreThanOneInjectableConstructor:ERROR", 86 "-Xep:MustBeClosedChecker:ERROR", 87 "-Xep:NCopiesOfChar:ERROR", 88 "-Xep:NonCanonicalStaticImport:ERROR", 89 "-Xep:NonFinalCompileTimeConstant:ERROR", 90 "-Xep:OptionalEquality:ERROR", 91 "-Xep:OverlappingQualifierAndScopeAnnotation:ERROR", 92 "-Xep:PackageInfo:ERROR", 93 "-Xep:PreconditionsCheckNotNull:ERROR", 94 "-Xep:PreconditionsCheckNotNullPrimitive:ERROR", 95 "-Xep:PredicateIncompatibleType:ERROR", 96 "-Xep:PrivateSecurityContractProtoAccess:ERROR", 97 "-Xep:ProtoFieldNullComparison:ERROR", 98 "-Xep:ProtoStringFieldReferenceEquality:ERROR", 99 "-Xep:ProvidesMethodOutsideOfModule:ERROR", 100 "-Xep:RandomCast:ERROR", 101 "-Xep:RestrictedApiChecker:ERROR", 102 "-Xep:SelfAssignment:ERROR", 103 "-Xep:ShouldHaveEvenArgs:ERROR", 104 "-Xep:StreamToString:ERROR", 105 "-Xep:SubstringOfZero:ERROR", 106 "-Xep:SuppressWarningsDeprecated:ERROR", 107 "-Xep:ThrowIfUncheckedKnownChecked:ERROR", 108 "-Xep:ThrowNull:ERROR", 109 "-Xep:TruthSelfEquals:ERROR", 110 "-Xep:TypeParameterQualifier:ERROR", 111 "-Xep:UnnecessaryTypeArgument:ERROR", 112 "-Xep:UnusedAnonymousClass:ERROR", 113 "-Xep:VarTypeName:ERROR", 114 // Errorprone default severity WARNING 115 // Errorprone default severity SUGGESTION 116 } 117 118 // The checks that are not fatal to the build. 119 config.ErrorProneChecksWarning = []string{ 120 // Errorprone default severity ERROR 121 "-Xep:ArrayEquals:WARN", 122 "-Xep:ArrayHashCode:WARN", 123 "-Xep:ArrayToString:WARN", 124 "-Xep:ArraysAsListPrimitiveArray:WARN", 125 "-Xep:BadShiftAmount:WARN", 126 "-Xep:ComparableType:WARN", 127 "-Xep:ComplexBooleanConstant:WARN", 128 "-Xep:ConditionalExpressionNumericPromotion:WARN", 129 "-Xep:EqualsReference:WARN", 130 "-Xep:FormatString:WARN", 131 "-Xep:GetClassOnAnnotation:WARN", 132 "-Xep:GetClassOnClass:WARN", 133 "-Xep:GuardedBy:WARN", 134 "-Xep:HashtableContains:WARN", 135 "-Xep:IdentityBinaryExpression:WARN", 136 "-Xep:InvalidTimeZoneID:WARN", 137 "-Xep:IsLoggableTagLength:WARN", 138 "-Xep:MathRoundIntLong:WARN", 139 "-Xep:MislabeledAndroidString:WARN", 140 "-Xep:MissingSuperCall:WARN", 141 "-Xep:MisusedWeekYear:WARN", 142 "-Xep:ModifyingCollectionWithItself:WARN", 143 "-Xep:NonRuntimeAnnotation:WARN", 144 "-Xep:NullTernary:WARN", 145 "-Xep:OverridesJavaxInjectableMethod:WARN", 146 "-Xep:ParcelableCreator:WARN", 147 "-Xep:ProtocolBufferOrdinal:WARN", 148 "-Xep:RandomModInteger:WARN", 149 "-Xep:RectIntersectReturnValueIgnored:WARN", 150 "-Xep:ReturnValueIgnored:WARN", 151 "-Xep:SelfComparison:WARN", 152 "-Xep:SelfEquals:WARN", 153 "-Xep:SizeGreaterThanOrEqualsZero:WARN", 154 "-Xep:StringBuilderInitWithChar:WARN", 155 "-Xep:TryFailThrowable:WARN", 156 "-Xep:UnusedCollectionModifiedInPlace:WARN", 157 158 // Errorprone default severity WARNING 159 // "-Xep:AmbiguousMethodReference:WARN", 160 // "-Xep:ArgumentSelectionDefectChecker:WARN", 161 // "-Xep:ArrayAsKeyOfSetOrMap:WARN", 162 // "-Xep:AssertEqualsArgumentOrderChecker:WARN", 163 // "-Xep:AssertThrowsMultipleStatements:WARN", 164 // "-Xep:AssertionFailureIgnored:WARN", 165 // "-Xep:AutoValueFinalMethods:WARN", 166 // "-Xep:BadAnnotationImplementation:WARN", 167 // "-Xep:BadComparable:WARN", 168 // "-Xep:BadImport:WARN", 169 // "-Xep:BadInstanceof:WARN", 170 // "-Xep:BigDecimalEquals:WARN", 171 // "-Xep:BigDecimalLiteralDouble:WARN", 172 // "-Xep:BoxedPrimitiveConstructor:WARN", 173 // "-Xep:ByteBufferBackingArray:WARN", 174 // "-Xep:CannotMockFinalClass:WARN", 175 // "-Xep:CanonicalDuration:WARN", 176 // "-Xep:CatchAndPrintStackTrace:WARN", 177 // "-Xep:CatchFail:WARN", 178 // "-Xep:ClassCanBeStatic:WARN", 179 // "-Xep:ClassNewInstance:WARN", 180 // "-Xep:CloseableProvides:WARN", 181 // "-Xep:CollectionToArraySafeParameter:WARN", 182 // "-Xep:CollectorShouldNotUseState:WARN", 183 // "-Xep:ComparableAndComparator:WARN", 184 // "-Xep:DateFormatConstant:WARN", 185 // "-Xep:DefaultCharset:WARN", 186 // "-Xep:DeprecatedThreadMethods:WARN", 187 // "-Xep:DoubleBraceInitialization:WARN", 188 // "-Xep:DoubleCheckedLocking:WARN", 189 // "-Xep:EqualsGetClass:WARN", 190 // "-Xep:EqualsHashCode:WARN", 191 // "-Xep:EqualsIncompatibleType:WARN", 192 // "-Xep:EqualsUnsafeCast:WARN", 193 // "-Xep:EqualsUsingHashCode:WARN", 194 // "-Xep:ExtendingJUnitAssert:WARN", 195 // "-Xep:FallThrough:WARN", 196 // "-Xep:Finally:WARN", 197 // "-Xep:FloatCast:WARN", 198 // "-Xep:FloatingPointAssertionWithinEpsilon:WARN", 199 // "-Xep:FloatingPointLiteralPrecision:WARN", 200 // "-Xep:FragmentInjection:WARN", 201 // "-Xep:FragmentNotInstantiable:WARN", 202 // "-Xep:FutureReturnValueIgnored:WARN", 203 // "-Xep:GetClassOnEnum:WARN", 204 // "-Xep:HidingField:WARN", 205 // "-Xep:ImmutableAnnotationChecker:WARN", 206 // "-Xep:ImmutableEnumChecker:WARN", 207 // "-Xep:IncompatibleModifiers:WARN", 208 // "-Xep:InconsistentCapitalization:WARN", 209 // "-Xep:InconsistentHashCode:WARN", 210 // "-Xep:IncrementInForLoopAndHeader:WARN", 211 // "-Xep:InjectOnConstructorOfAbstractClass:WARN", 212 // "-Xep:InputStreamSlowMultibyteRead:WARN", 213 // "-Xep:InstanceOfAndCastMatchWrongType:WARN", 214 // "-Xep:IntLongMath:WARN", 215 // "-Xep:IterableAndIterator:WARN", 216 // "-Xep:JUnit3FloatingPointComparisonWithoutDelta:WARN", 217 // "-Xep:JUnit4ClassUsedInJUnit3:WARN", 218 // "-Xep:JUnitAmbiguousTestClass:WARN", 219 // "-Xep:JavaLangClash:WARN", 220 // "-Xep:JdkObsolete:WARN", 221 // "-Xep:LockNotBeforeTry:WARN", 222 // "-Xep:LogicalAssignment:WARN", 223 // "-Xep:MathAbsoluteRandom:WARN", 224 // "-Xep:MissingCasesInEnumSwitch:WARN", 225 // "-Xep:MissingFail:WARN", 226 // "-Xep:MissingOverride:WARN", 227 // "-Xep:ModifiedButNotUsed:WARN", 228 // "-Xep:ModifyCollectionInEnhancedForLoop:WARN", 229 // "-Xep:MultipleParallelOrSequentialCalls:WARN", 230 // "-Xep:MutableConstantField:WARN", 231 // "-Xep:NarrowingCompoundAssignment:WARN", 232 // "-Xep:NestedInstanceOfConditions:WARN", 233 // "-Xep:NonAtomicVolatileUpdate:WARN", 234 // "-Xep:NonOverridingEquals:WARN", 235 // "-Xep:NullableConstructor:WARN", 236 // "-Xep:NullablePrimitive:WARN", 237 // "-Xep:NullableVoid:WARN", 238 // "-Xep:ObjectToString:WARN", 239 // "-Xep:ObjectsHashCodePrimitive:WARN", 240 // "-Xep:OperatorPrecedence:WARN", 241 // "-Xep:OptionalNotPresent:WARN", 242 // "-Xep:OrphanedFormatString:WARN", 243 // "-Xep:OverrideThrowableToString:WARN", 244 // "-Xep:Overrides:WARN", 245 // "-Xep:OverridesGuiceInjectableMethod:WARN", 246 // "-Xep:ParameterName:WARN", 247 // "-Xep:PreconditionsInvalidPlaceholder:WARN", 248 // "-Xep:ProtoRedundantSet:WARN", 249 // "-Xep:QualifierOrScopeOnInjectMethod:WARN", 250 // "-Xep:ReachabilityFenceUsage:WARN", 251 // "-Xep:ReferenceEquality:WARN", 252 // "-Xep:RequiredModifiers:WARN", 253 // "-Xep:ShortCircuitBoolean:WARN", 254 // "-Xep:StaticGuardedByInstance:WARN", 255 // "-Xep:StreamResourceLeak:WARN", 256 // "-Xep:StringSplitter:WARN", 257 // "-Xep:SwigMemoryLeak:WARN", 258 // "-Xep:SynchronizeOnNonFinalField:WARN", 259 // "-Xep:ThreadJoinLoop:WARN", 260 // "-Xep:ThreadLocalUsage:WARN", 261 // "-Xep:ThreadPriorityCheck:WARN", 262 // "-Xep:ThreeLetterTimeZoneID:WARN", 263 // "-Xep:ToStringReturnsNull:WARN", 264 // "-Xep:TruthAssertExpected:WARN", 265 // "-Xep:TruthConstantAsserts:WARN", 266 // "-Xep:TruthIncompatibleType:WARN", 267 // "-Xep:TypeNameShadowing:WARN", 268 // "-Xep:TypeParameterShadowing:WARN", 269 // "-Xep:TypeParameterUnusedInFormals:WARN", 270 // "-Xep:URLEqualsHashCode:WARN", 271 // "-Xep:UndefinedEquals:WARN", 272 // "-Xep:UnnecessaryParentheses:WARN", 273 // "-Xep:UnsafeFinalization:WARN", 274 // "-Xep:UnsafeReflectiveConstructionCast:WARN", 275 // "-Xep:UnsynchronizedOverridesSynchronized:WARN", 276 // "-Xep:UseCorrectAssertInTests:WARN", 277 // "-Xep:VariableNameSameAsType:WARN", 278 // "-Xep:WaitNotInLoop:WARN", 279 // "-Xep:WakelockReleasedDangerously:WARN", 280 281 // Errorprone default severity SUGGESTION 282 } 283 284 // The checks that are default-disabled and listed for completeness 285 // and simple experiments. 286 config.ErrorProneChecksDefaultDisabled = []string{ 287 // Errorprone default severity ERROR 288 // "-Xep:AndroidJdkLibsChecker:ERROR", 289 // "-Xep:AssistedInjectAndInjectOnSameConstructor:ERROR", 290 // "-Xep:AutoFactoryAtInject:ERROR", 291 // "-Xep:ClassName:ERROR", 292 // "-Xep:ComparisonContractViolated:ERROR", 293 // "-Xep:DepAnn:ERROR", 294 // "-Xep:DivZero:ERROR", 295 // "-Xep:EmptyIf:ERROR", 296 // "-Xep:FuzzyEqualsShouldNotBeUsedInEqualsMethod:ERROR", 297 // "-Xep:InjectInvalidTargetingOnScopingAnnotation:ERROR", 298 // "-Xep:InjectMoreThanOneQualifier:ERROR", 299 // "-Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass:ERROR", 300 // "-Xep:InjectScopeOrQualifierAnnotationRetention:ERROR", 301 // "-Xep:InjectedConstructorAnnotations:ERROR", 302 // "-Xep:InsecureCryptoUsage:ERROR", 303 // "-Xep:IterablePathParameter:ERROR", 304 // "-Xep:JMockTestWithoutRunWithOrRuleAnnotation:ERROR", 305 // "-Xep:Java7ApiChecker:ERROR", 306 // "-Xep:JavaxInjectOnFinalField:ERROR", 307 // "-Xep:LockMethodChecker:ERROR", 308 // "-Xep:LongLiteralLowerCaseSuffix:ERROR", 309 // "-Xep:NoAllocation:ERROR", 310 // "-Xep:NumericEquality:ERROR", 311 // "-Xep:ParameterPackage:ERROR", 312 // "-Xep:RestrictTo:ERROR", 313 // "-Xep:StaticOrDefaultInterfaceMethod:ERROR", 314 // "-Xep:UnlockMethod:ERROR", 315 316 // Errorprone default severity WARNING 317 // "-Xep:AnnotateFormatMethod:WARN", 318 // "-Xep:AnnotationPosition:WARN", 319 // "-Xep:AssertFalse:WARN", 320 // "-Xep:AssistedInjectAndInjectOnConstructors:WARN", 321 // "-Xep:BinderIdentityRestoredDangerously:WARN", 322 // "-Xep:BindingToUnqualifiedCommonType:WARN", 323 // "-Xep:ConstructorInvokesOverridable:WARN", 324 // "-Xep:ConstructorLeaksThis:WARN", 325 // "-Xep:EmptyTopLevelDeclaration:WARN", 326 // "-Xep:EqualsBrokenForNull:WARN", 327 // "-Xep:ExpectedExceptionChecker:WARN", 328 // "-Xep:FunctionalInterfaceClash:WARN", 329 // "-Xep:HardCodedSdCardPath:WARN", 330 // "-Xep:InconsistentOverloads:WARN", 331 // "-Xep:InvalidParam:WARN", 332 // "-Xep:InvalidTag:WARN", 333 // "-Xep:InvalidThrows:WARN", 334 // "-Xep:MissingDefault:WARN", 335 // "-Xep:MutableMethodReturnType:WARN", 336 // "-Xep:NoFunctionalReturnType:WARN", 337 // "-Xep:NonCanonicalStaticMemberImport:WARN", 338 // "-Xep:NullableDereference:WARN", 339 // "-Xep:PrimitiveArrayPassedToVarargsMethod:WARN", 340 // "-Xep:ProtosAsKeyOfSetOrMap:WARN", 341 // "-Xep:ProvidesFix:WARN", 342 // "-Xep:QualifierWithTypeUse:WARN", 343 // "-Xep:RedundantThrows:WARN", 344 // "-Xep:ReturnFromVoid:WARN", 345 // "-Xep:StaticQualifiedUsingExpression:WARN", 346 // "-Xep:StringEquality:WARN", 347 // "-Xep:SystemExitOutsideMain:WARN", 348 // "-Xep:TestExceptionChecker:WARN", 349 // "-Xep:UnnecessaryDefaultInEnumSwitch:WARN", 350 // "-Xep:Unused:WARN", 351 // "-Xep:UnusedException:WARN", 352 // "-Xep:Var:WARN", 353 354 // Errorprone default severity SUGGESTION 355 // "-Xep:BooleanParameter:SUGGESTION", 356 // "-Xep:ClassNamedLikeTypeParameter:SUGGESTION", 357 // "-Xep:ConstantField:SUGGESTION", 358 // "-Xep:EmptySetMultibindingContributions:SUGGESTION", 359 // "-Xep:ExpectedExceptionRefactoring:SUGGESTION", 360 // "-Xep:FieldCanBeFinal:SUGGESTION", 361 // "-Xep:FieldMissingNullable:SUGGESTION", 362 // "-Xep:ImmutableRefactoring:SUGGESTION", 363 // "-Xep:LambdaFunctionalInterface:SUGGESTION", 364 // "-Xep:MethodCanBeStatic:SUGGESTION", 365 // "-Xep:MixedArrayDimensions:SUGGESTION", 366 // "-Xep:MultiVariableDeclaration:SUGGESTION", 367 // "-Xep:MultipleTopLevelClasses:SUGGESTION", 368 // "-Xep:MultipleUnaryOperatorsInMethodCall:SUGGESTION", 369 // "-Xep:PackageLocation:SUGGESTION", 370 // "-Xep:ParameterComment:SUGGESTION", 371 // "-Xep:ParameterNotNullable:SUGGESTION", 372 // "-Xep:PrivateConstructorForNoninstantiableModule:SUGGESTION", 373 // "-Xep:PrivateConstructorForUtilityClass:SUGGESTION", 374 // "-Xep:RemoveUnusedImports:SUGGESTION", 375 // "-Xep:ReturnMissingNullable:SUGGESTION", 376 // "-Xep:ScopeOnModule:SUGGESTION", 377 // "-Xep:SwitchDefault:SUGGESTION", 378 // "-Xep:TestExceptionRefactoring:SUGGESTION", 379 // "-Xep:ThrowsUncheckedException:SUGGESTION", 380 // "-Xep:TryFailRefactoring:SUGGESTION", 381 // "-Xep:TypeParameterNaming:SUGGESTION", 382 // "-Xep:UngroupedOverloads:SUGGESTION", 383 // "-Xep:UnnecessarySetDefault:SUGGESTION", 384 // "-Xep:UnnecessaryStaticImport:SUGGESTION", 385 // "-Xep:UseBinds:SUGGESTION", 386 // "-Xep:WildcardImport:SUGGESTION", 387 } 388 389 config.ErrorProneChecksOff = []string{ 390 // We are not interested in Guava recommendations 391 // for String.split. 392 "-Xep:StringSplitter:OFF", 393 // b/117877739. 394 "-Xep:TruthAssertExpected:OFF", 395 // b/170172949 396 "-Xep:MissingOverride:OFF", 397 "-Xep:UnnecessaryParentheses:OFF", 398 } 399 400 config.ErrorProneFlags = []string{ 401 "-Xdiags:verbose", 402 "-XDcompilePolicy=simple", 403 "-XDallowBetterNullChecks=false", 404 "-XDusePolyAttribution=true", 405 "-XDuseStrictMethodClashCheck=true", 406 "-XDuseStructuralMostSpecificResolution=true", 407 "-XDuseGraphInference=true", 408 "-XDandroidCompatible=true", 409 // As we emit errors as warnings, 410 // increase the warning limit. 411 "-Xmaxwarns 9999999", 412 413 // Extra flags needed by ErrorProne for OpenJDK9 from 414 // http://errorprone.info/docs/installation 415 "-J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED", 416 "-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", 417 "-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", 418 "-J--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED", 419 "-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", 420 "-J--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED", 421 "-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED", 422 "-J--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", 423 "-J--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED", 424 } 425} 426