Releases: google/error-prone
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
Error Prone 2.34.0
Changes:
- Passing the javac flag
--should-stop=ifError=FLOWis now required when running Error Prone (#4595) - The
MemberNamecheck was renamed toIdentifierName
New checks:
FutureTransformAsync: The usage of transformAsync is not necessary when all the return values of the transformation function are immediate futures.MisformattedTestData: Reformats Java source code inside Error Prone test cases.MisleadingEscapedSpace: Using\sanywhere except at the end of a line in a text block is potentially misleading.ThrowIfUncheckedKnownUnchecked:throwIfUnchecked(knownUnchecked)is equivalent tothrow knownUnchecked.
Closed issues: #4595, #4598, #4620
Full changelog: v2.33.0...v2.34.0
Error Prone 2.33.0
Similar to release 2.32.0, the minimum supported JDK version to run Error Prone is JDK 17 (#3803). Using Error Prone to compile code that is deployed to earlier versions is still fully supported, but will require using JDK 17 or newer for compilation and setting --release or -source/-target/-bootclasspath.
Changes:
- Update protobuf version for CVE-2024-7254
New checks:
ArrayRecordComponent: Record components should not be arrays.
Full changelog: v2.32.0...v2.33.0
Error Prone 2.32.0
The minimum support JDK version to run Error Prone is now JDK 17 (#3803).
Using Error Prone to compile code that is deployed to earlier versions is still fully supported, but will requires using JDK 17 or newer for compilation and setting --release or -source/-target/-bootclasspath.
Full changelog: v2.31.0...v2.32.0