github typetools/checker-framework checker-framework-3.5.0
Checker Framework 3.5.0

latest releases: checker-framework-3.53.0, checker-framework-3.52.1, checker-framework-3.52.0...
5 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
@DotSeparatedIdentifiersOrPrimitiveType
#IdentifierOrPrimitiveType

The Nullness Checker now treats System.getProperty() soundly. Use -Alint=permitClearProperty to disable special treatment of System.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> versus List<@Untainted Character>. When a non-generic class represents a collection with a hard-coded type (as StringBuffer hard-codes Character), you can use the new class qualifier parameter feature to distinguish StringBuffers 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:

  • 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.

Don't miss a new checker-framework release

NewReleases is sending notifications on new releases.