Version 3.8.0, December 1, 2020
The Initialized Fields Checker warns when a field is not initialized by a constructor. This is more general than the Initialization Checker, which only checks that @NonNull fields are initialized.
The manual describes how to modify an sbt build file to run the Checker Framework.
The -AwarnUnneededSuppressions command-line option warns only about suppression strings that contain a checker name.
The -AwarnUnneededSuppressionsExceptions=REGEX command-line option partially disables -AwarnUnneededSuppressions. Most users don't need this.
Implementation details:
Added classes SubtypeIsSubsetQualifierHierarchy and SubtypeIsSupersetQualifierHierarchy.
Moved the contractsUtils field from the visitor to the type factory.
Class renamings:
ContractsUtils=>ContractsFromMethod
Method renamings:
ElementUtils.getVerboseName=>ElementUtils.getQualifiedNameElementUtils.getSimpleName=>ElementUtils.getSimpleSignature
Field renamings:
AnnotatedTypeMirror.actualType=>AnnotatedTypeMirror.underlyingType
Added a formal parameter to methods in MostlyNoElementQualifierHierarchy:
leastUpperBoundWithElementsgreatestLowerBoundWithElements
Removed a formal parameter from methods in BaseTypeVisitor:
checkPostconditioncheckConditionalPostcondition
In Analysis.runAnalysisFor(), changed boolean parameter to enum BeforeOrAfter.
Removed org.checkerframework.framework.util.AnnotatedTypes#getIteratedType; use AnnotatedTypeFactory#getIterableElementType(ExpressionTree) instead.
Closed issues:
#3287, #3390, #3681, #3839, #3850, #3851, #3862, #3871, #3884, #3888, #3908, #3929, #3932, #3935.