Releases: google/error-prone
Error Prone 2.43.0
The minimum support JDK version to run Error Prone is now JDK 21 (#4867).
Changes:
-XepPatchChecksnow skips disabled checks (#4943)AndroidJdkLibsCheckerhas been removed, the recommended replacement for Android code is Android Lint's NewApi check
New checks:
NullNeedsCastForVarargs: Detect calls that incorrectly passes anullarray instead of anullelement.RedundantNullCheck: detect checks on expressions that are non-null.
Closed issues: #4943, #5102, #5107, #5121, #5158, #5217, #5239
Full changelog: v2.42.0...v2.43.0
Error Prone 2.42.0
New checks:
ExplicitArrayForVarargs: discourage unnecessary explicit construction of an array to provide varargs.FloggerPerWithoutRateLimit: discourage Flogger'sperUniquewithout rate limitingStringJoin: BanString.join(CharSequence)andString.join(CharSequence, CharSequence)ThreadBuilderNameWithPlaceholder: Do not allow placeholders inThread.Builder.name(String)orname(String, int).
Changes:
- The return type of
ASTHelpers.asFlagSethas changed. The previous type wasEnumSet<Flags.Flag>, whereFlags.Flagis an enum in the javac classFlags. A recent JDK change has replaced that enum with a new top-level enum calledFlagsEnum. It is not possible to changeASTHelpers.asFlagSetin a way that would be type-safe and compatible with the enums from JDKs both before and after the change. Instead, the method now returnsImmutableSet<String>, where the strings come from thetoString()of the enum constants. That means they are"native","abstract", etc. - Flag
IO.print[ln]()inSystemOut.
Full changelog: v2.41.0...v2.42.0
Error Prone 2.41.0
New checks:
- EffectivelyPrivate: Detect declarations that have
publicorprotectedmodifiers, but are effectively private
Changes:
- Skip BooleanLiteral findings if the target type is boxed (#5134)
Full changelog: v2.40.0...v2.41.0
Error Prone 2.40.0
Changes:
- Bug fixes and improvements
- Releases (including snapshots) have migrated from OSSRH to the Central Publisher Portal
Full changelog: v2.39.0...v2.40.0
Error Prone 2.39.0
Changes:
- Temporarily downgrade to Guava 33.4.0 (#5108)
Checks:
BooleanLiteral: PrefertruetoBoolean.TRUEExpensiveLenientFormatString: Renamed fromPreconditionsExpensiveString, detects unnecessary calls toString.formatin the arguments of lenient formatting methods.UnnecessaryQualifier: Detects@Qualifieror@BindingAnnotationannotations that have no effect, and can be removed
Full changelog: v2.38.0...v2.39.0
Error Prone 2.38.0
New checks:
AddNullMarkedToPackageInfo: adds@org.jspecify.annotations.NullMarkedannotation to package-info filesIntLiteralCast: Suggests a literal of the desired type instead of casting an int literal to a long, float, or doubleMisleadingEmptyVarargs: Discourages calling varargs methods that expect at least one argument with no arguments, like Mockito'sthenThrowPreconditionsExpensiveString: Discourages expensive string formatting in GuavaPreconditionschecksSelfSet: Detects mistakes likeproto.setFoo(proto.getFoo())UnnecessaryCopy: detect unnecessary copies of proto Lists and Maps.
Closed issues: #4924, #4897, #4995
Full changelog: v2.37.0...v2.38.0
Error Prone 2.37.0
Changes:
- The annotations that were previously in
error_prone_type_annotationshave been been merged intoerror_prone_annotations.error_prone_type_annotationsis now deprecated, and will be removed in a future release.
New checks:
AssignmentExpression- The use of an assignment expression can be surprising and hard to read; consider factoring out the assignment to a separate statement.IntFloatConversion- Detect calls toscalbthat should be using the double overload insteadInvalidSnippet- Detects snippets which omit the:required for inline code.JUnit4EmptyMethods- Detects empty JUnit4@Before,@After,@BeforeClass, and@AfterClassmethods.MockIllegalThrows- Detects cases where Mockito is configured to throw checked exception types which are impossible.NegativeBoolean- Prefer positive boolean names.RuleNotRun- DetectsTestRules not annotated with@Rule, that won't be run.StringConcatToTextBlock- Replaces concatenated multiline strings with text blocks.TimeInStaticInitializer- Detects accesses of the system time in static contexts.
Closed issues:
- Propagate check flags in patch mode (#4699)
- Fixes a crash in ComputeIfAbsentAmbiguousReference (#4736)
- Show the field name in HidingField diagnostics (#4775)
- Add support for jakarta annotations to some checks (#4782)
- FloatingPointAssertionWithinEpsilonTest depends on default locale (#4815)
@InlineMepatching ofStrings.repeatproduces broken code (#4819)- Fix a crash in IdentifierName on unnamed (
_) variables (#4847) - Fix a crash in ArgumentParameterSwap (#490)
Full changelog: v2.36.0...v2.37.0
Error Prone 2.36.0
Changes:
- Add new matcher interfaces to
ErrorProneScannerfor AST nodes introduced after Java 11 (e5fd194) - Fix compatibility with latest JDK 24 EA builds (d67bc15)
- Check that
--should-stop=ifError=FLOWis set when using the-Xpluginintegration (e71db1f)
New checks:
DuplicateBranches: Discourage conditional expressions and if statements where both branches are the sameRedundantControlFlow: Reports redundantcontinuestatements.
Full changelog: v2.35.1...v2.36.0
Error Prone 2.35.1
Error Prone's dependency on protobuf has been downgraded to 3.25.5 for this release.
Version 3.25.5 of protobuf still fixes CVE-2024-7254. This release is provided for users who aren't ready to update to 4.x, see also #4584 and #4634. Future versions of Error Prone will upgrade back to protobuf 4.x.
Full changelog: v2.35.0...v2.35.1
Error Prone 2.35.0
Changes:
- Fix handling of
\sbefore the trailing delimiter inMisleadingEscapedSpace TimeUnitMismatchimprovements: handle binary trees, consider trees likefooSeconds * 1000to have units of millis
New checks:
JavaDurationGetSecondsToToSeconds: Preferduration.toSeconds()overduration.getSeconds()
Full changelog: v2.34.0...v2.35.0