Error Prone v2.2.0 Release Notes

Release Date: 2018-01-08 // over 4 years ago
  • ๐Ÿ†• New errors:

    • [ComparableType] A new check for detecting incompatibility of types between the type of a class implementing Comparable<T> and T.
    • [ConditionalExpressionNumericPromotion] A conditional expression with numeric second and third operands of differing types may give surprising results.

    ๐Ÿ†• New warnings:

    ๐Ÿ†• New optional checks:

    • [StringSplit] detects String.split(String), which has surprising behaviour.
    • ๐Ÿ”จ [StringSplitter] refactors uses of String.split to Splitter.
    • ๐Ÿ’… [TypeParameterNaming] enforces that type parameters are named according to the google style guide.
    • [RandomCast] casting a random number in the range [0.0, 1.0) to an integer or long always results in 0.

    ๐Ÿ”„ Changes to existing checks

    • ๐Ÿ‘ ArrayEquals now detects misuse of
    • ๐Ÿ‘ EqualsIncompatibleType now detects misuse of
    • SizeGreaterThanOrEqualsZero now detects misuse of common Android-specific collections.
    • FilesLinesLeak was renamed to StreamResourceLeak, and now checks other methods in Files.
    • ๐Ÿ‘• FunctionalInterfaceClash is no longer enabled by default.
    • JUnit4{SetUp,TearDown}NotRun will find methods that look like setup or teardown methods, but have a @Before or @After annotation that are not org.junit.Before or org.junit.After.
    • SimpleDateFormatConstant now handles all DateFormats, and is renamed to DateFormatConstant
    • 0๏ธโƒฃ Disable RestrictToEnforcer by default (fixes #812).
    • EqualsIncompatibleType/PredicateIncompatibleType/CollectionIncompatible now explore type parameters to ensure their compatibility: Foo<A> is incompatible with Foo<B> if A and B are incompatible with each-other.

    Other changes

    • โšก๏ธ Update to javac 9+181-r4173-1 (fixes #781 and #784).
    • โœ‚ Remove BugPattern.suppressibility and BugPattern.customSuppressionAnnotations: suppressionAnnotations should be used instead.