Checker Framework v3.7.0 Release Notes

Release Date: 2020-10-01 // over 3 years ago
  • ๐Ÿ”– Version 3.7.0, October 1, 2020

    ๐Ÿ— The new Called Methods Checker tracks methods that have definitely been called on an object. It automatically supports detecting mis-uses of the builder pattern in code that uses Lombok or AutoValue.

    ๐Ÿ‘ Accumulation analysis is now supported via a generic Accumulation Checker. An accumulation analysis is a restricted form of typestate analysis that does not require a precise alias analysis for soundness. The Called Methods Checker is an accumulation analysis.

    ๐Ÿ‘ The Nullness Checker supports annotations org.codehaus.commons.nullanalysis.NotNull, org.codehaus.commons.nullanalysis.Nullable, and org.jspecify.annotations.Nullable.

    ๐Ÿ‘ The Signature Checker supports annotations @CanonicalName and @CanonicalNameOrEmpty.
    The Signature Checker treats jdk.jfr.Unsigned as an alias for its own @Unsigned annotation.

    The shorthand syntax for the -processor command-line argument applies to
    utility checkers, such as the Constant Value Checker.

    Implementation details:

    A checker implementation may override AnnotatedTypeFactory.getWidenedAnnotations
    to provide special behavior for primitive widening conversions.

    ๐Ÿšš Deprecated org.checkerframework.framework.util.MultiGraphQualifierHierarchy and org.checkerframework.framework.util.GraphQualifierHierarchy. Removed AnnotatedTypeFactory#createQualifierHierarchy(MultiGraphFactory) and AnnotatedTypeFactory#createQualifierHierarchyFactory.
    ๐Ÿ‘€ See Javadoc of MultiGraphQualifierHierarchy for instructions on how to use the new classes and methods.

    ๐Ÿ“‡ Renamed methods:
    NumberUtils.isFloatingPoint => TypesUtils.isFloatingPoint
    NumberUtils.isIntegral => TypesUtils.isIntegralPrimitiveOrBoxed
    NumberUtils.isPrimitiveFloatingPoint => TypeKindUtils.isFloatingPoint
    NumberUtils.isPrimitiveIntegral => TypeKindUtils.isIntegral
    NumberUtils.unboxPrimitive => TypeKindUtils.primitiveOrBoxedToTypeKind
    TypeKindUtils.widenedNumericType => TypeKindUtils.widenedNumericType
    TypesUtils.isFloating => TypesUtils.isFloatingPrimitive
    TypesUtils.isIntegral => TypesUtils.isIntegralPrimitive

    The CFStore copy constructor now takes only one argument.

    Closed issues:
    #352, #354, #553, #722, #762, #2208, #2239, #3033, #3105, #3266, #3275, #3408, #3561, #3616, #3619, #3622, #3625, #3630, #3632, #3648, #3650, #3667, #3668, #3669, #3700, #3701.