Checker Framework v3.5.0 Release Notes
Release Date: 2020-07-01 // almost 4 years ago-
๐ Version 3.5.0, July 1, 2020
๐ Use "allcheckers:" instead of "all:" as a prefix in a warning suppression string. Writing
@SuppressWarnings("allcheckers")
means the same thing as@SuppressWarnings("all")
, unless the-ArequirePrefixInWarningSuppressions
command-line argument is supplied. See the manual for details.It is no longer necessary to pass -Astubs=checker.jar/javadoc.astub when compiling a program that uses Javadoc classes.
๐ Renamed command-line arguments:
- โ -AshowSuppressWarningKeys to -AshowSuppressWarningsStrings
The Signature Checker no longer considers Java keywords to be identifiers.
๐ Renamed Signature Checker annotations:
๐ฆ @BinaryNameInUnnamedPackage => @BinaryNameWithoutPackage
๐ฆ @FieldDescriptorForPrimitiveOrArrayInUnnamedPackage => @FieldDescriptorWithoutPackage
๐ฆ @IdentifierOrArray => @ArrayWithoutPackage
โ Added new Signature Checker annotations:
@BinaryNameOrPrimitiveType
@DotSeparatedIdentifiersOrPrimitiveTypeIdentifierOrPrimitiveType
๐ The Nullness Checker now treats
System.getProperty()
soundly. Use-Alint=permitClearProperty
to disable special treatment ofSystem.getProperty()
and to permit undefining built-in system properties.Class qualifier parameters: When a generic class represents a collection, a user can write a type qualifier on the type argument, as in
List<@Tainted Character>
versusList<@Untainted Character>
. When a non-generic class represents a collection with a hard-coded type (asStringBuffer
hard-codesCharacter
), you can use the new class qualifier parameter feature to distinguishStringBuffer
s that contain different types of characters.๐ The Dataflow Framework supports backward analysis. See its manual.
Implementation details:
๐ Changed the types of some fields and methods from array to List:
- 0๏ธโฃ QualifierDefaults.validLocationsForUncheckedCodeDefaults()
- QualifierDefaults.STANDARD_CLIMB_DEFAULTS_TOP
- QualifierDefaults.STANDARD_CLIMB_DEFAULTS_BOTTOM
- QualifierDefaults.STANDARD_UNCHECKED_DEFAULTS_TOP
- QualifierDefaults.STANDARD_UNCHECKED_DEFAULTS_BOTTOM
Dataflow Framework: Analysis is now an interface. Added AbstractAnalysis, ForwardAnalysis, ForwardTransferFunction, ForwardAnalysisImpl, BackwardAnalysis, BackwardTransferFunction, and BackwardAnalysisImpl.
To adapt existing code:extends Analysis<V, S, T>
=>extends ForwardAnalysisImpl<V, S, T>
implements TransferFunction<V, S>
=>implements ForwardTransferFunction<V, S>
In AbstractQualifierPolymorphism, use AnnotationMirrors instead of sets of annotation mirrors.
โ Renamed meta-annotation SuppressWarningsKeys to SuppressWarningsPrefix.
โ Renamed SourceChecker#getSuppressWarningsKeys(...) to getSuppressWarningsPrefixes.
โ Renamed SubtypingChecker#getSuppressWarningsKeys to getSuppressWarningsPrefixes.โ Added GenericAnnotatedTypeFactory#postAnalyze, changed signature of GenericAnnotatedTypeFactory#handleCFGViz, and removed CFAbstractAnalysis#visualizeCFG.
โ Removed methods and classes marked deprecated in release 3.3.0 or earlier.
Closed issues:
#1362, #1727, #2632, #3249, #3296, #3300, #3356, #3357, #3358, #3359, #3380.