Releases: google/error-prone
Error Prone 2.26.1
This release contains all of the changes in 2.26.0, plus a bug fix to the module name of the annotations artifact com.google.errorprone.annotations
(9d99ee7)
Starting in 2.26.x
, the 'annotations' artifact now includes a module-info.java
for Java Platform Module System support, thanks to @sgammon in #4311.
Compatibility note:
Now that the annotations artifact explicit declares a module instead of relying on Automatic-Module-Name
, JDK 17 and newer perform stricter module encapsulation checks. Modularized libraries depending on Error Prone annotations 2.26.x
and newer may see errors like:
error: package com.google.errorprone.annotations is not visible
import com.google.errorprone.annotations.CheckReturnValue;
^
(package com.google.errorprone.annotations is declared in module com.google.errorprone.annotations, but module ... does not read it)
The fix is to add requires static
to the module declaration of modularized libraries that depend on Error Prone annotations:
module your.module {
...
+ requires static com.google.errorprone.annotations;
}
Full Changelog: v2.26.0...v2.26.1
Error Prone 2.26.0
Warning: This release contains a bug, please use 2.26.1 or newer instead.
Changes:
- The 'annotations' artifact now includes a
module-info.java
for Java Platform Module System support, thanks to @sgammon in #4311. - Disabled checks passed to
-XepPatchChecks
are now ignored, instead of causing a crash. Thanks to @oxkitsune in #4028.
New checks:
SystemConsoleNull
: Null-checkingSystem.console()
is not a reliable way to detect if the console is connected to a terminal.EnumOrdinal
: Discourage uses ofEnum.ordinal()
Closed issues: #2649, #3908, #4028, #4311, #4314
Full Changelog: v2.25.0...v2.26.0
Error Prone 2.25.0
New checks:
JUnitIncompatibleType
: Detects incompatible types passed to an assertion, similar toTruthIncompatibleType
RedundantSetterCall
: Detects fields set twice in the same chained expression. Generalization of previousProtoRedundantSet
check to also handle AutoValue.
Closed issues: #4195, #4224, #4228, #4248, #4249, #4251
Full Changelog: v2.24.1...v2.25.0
Error Prone 2.24.1
Error Prone 2.24.0
New checks:
MultipleNullnessAnnotations
: Discourage multiple nullness annotationsNullableTypeParameter
: Discourage nullness annotations on type parametersNullableWildcard
: Discourage nullness annotations on wildcardsSuperCallToObjectMethod
: Generalization ofSuperEqualsIsObjectEquals
, now covershashCode
Full Changelog: v2.23.0...v2.24.0
Error Prone 2.23.0
New checks:
DuplicateDateFormatField
NonFinalStaticField
StringCharset
StringFormatWithLiteral
SuperEqualsIsObjectEquals
Bug fixes and improvements: #3897, #4114, #4123
Full Changelog: v2.22.0...v2.23.0
Error Prone 2.22.0
We are considering raising the minimum supported JDK from JDK 11 to JDK 17 in a future release of Error Prone, see #3803. Note that using a newer JDK version to run javac during the build doesn't prevent building code that is deployed to earlier versions, for example it's supported to use the JDK 17 javac and pass --release 11
to compile Java 11 code that is deployed to a JDK 11 runtime. If you have feedback, please comment on #3803.
New checks:
ClosingStandardOutputStreams
: Prevents accidentally closingSystem.{out,err}
with try-with-resourcesTruthContainsExactlyElementsInUsage
:containsExactly
is preferred overcontainsExactlyElementsIn
when creating new iterablesUnnecessaryAsync
: detects unnecessary use of async primitives in local (and hence single-threaded) scopesReturnAtTheEndOfVoidFunction
: detects unnecessaryreturn
statements at the end ofvoid
functionsMultimapKeys
: Suggests usingkeySet()
instead of iterating overMultimap.keys()
, which does not collapse duplicates
Bug fixes and improvements:
- Don't complain about literal IP addresses in
AddressSelection
(44b6552) - Prevent SuggestedFixes#renameMethod from modifying return type declaration (#4043)
- Fix UnusedVariable false positives for private record parameters (#2713)
- When running in conservative mode, no longer assume that implementations of
Map.get
, etc. returnnull
(#2910) - CanIgnoreReturnValueSuggester: Support additional exempting method annotations (#4009)
- UnusedVariable: exclude junit5's
@RegisterExtension
(#3892) - Support running all available patch checks (#947)
- Upgrade java-diff-utils 4.0 -> 4.12 (#4081)
- Flag unused Refaster template parameters (#4060)
- Support
@SuppressWarnings("all")
(#4065) - Prevent Refaster
UMemberSelect
from matching method parameters (#2456) - MissingDefault : Don't require
// fall out
comments on expression switches (#2709) - Skip UnnecessaryLambda findings for usages in enhanced for loops (#2518)
- Fix bug where nested MissingBraces violations' suggested fixes result in broken code (#3797)
- Add support for specifying
exemptPrefixes
/exemptNames
for UnusedVariable via flags (#2753) - UnusedMethod: Added exempting variable annotations (#2881)
Full Changelog: v2.21.1...v2.22.0
Error Prone 2.21.1
Changes:
- Handle overlapping ranges in suppressedRegions (fixes #4040)
- Add
AddressSelection
to discourage APIs that convert a hostname to a single address
Full Changelog: v2.21.0...v2.21.1
Error Prone 2.21.0
New Checkers:
AttemptedNegativeZero
: Prevents accidental use of-0
, which is the same as0
. The floating-point negative zero is-0.0
.ICCProfileGetInstance
: Warns on uses ofICC_Profile.getInstance(String)
, due to JDK-8191622.MutableGuiceModule
: Fields in Guice modules should befinal
.NullableOptional
: Discourages@Nullable
-annotatedOptional
s.OverridingMethodInconsistentArgumentNamesChecker
: Arguments of overriding method are inconsistent with overridden method.
Fixed issues: #3976, #3986, #4001, #4002, #4026, #4027
Full Changelog: v2.20.0...v2.21.0
Error Prone 2.20.0
Changes:
- This release is compatible with early-access builds of JDK 21.
New Checkers:
InlineTrivialConstant
UnnecessaryStringBuilder
BanClassLoader
DereferenceWithNullBranch
DoNotUseRuleChain
LockOnNonEnclosingClassLiteral
MissingRefasterAnnotation
NamedLikeContextualKeyword
NonApiType
Fixes issues: #2232, #2243, #2997, #3301, #3843, #3903, #3918, #3923, #3931, #3945, #3946
Full Changelog: v2.19.1...v2.20.0