We have released a new version of the Checker Framework.
The Checker Framework lets you create and/or run pluggable type checkers, in order to detect and prevent bugs in your code.
You can find documentation and download links at:
Changes for Checker Framework version 3.35.0:
User-visible changes:
The Checker Framework no longer issues type.checking.not.run
errors. This reduces clutter in the output.
Signedness Checker:
Object.hashCode()
is now @UnknownSignedness
.Implementation details:
Instead of overriding isRelevant()
, a type factory implementation should override isRelevantImpl()
. Clients should continue to call isRelevant()
; never call isRelevantImpl()
.
Methods that now return a boolean
rather than void
:
commonAssignmentCheck()
checkArrayInitialization()
checkLock()
checkLockOfThisOrTree()
ensureExpressionIsEffectivelyFinal()
Methods that now return AnnotationMirrorSet
instead of Set<? extends AnnotationMirror>
:
getTopAnnotations()
getBottomAnnotations()
getDefaultTypeDeclarationBounds()
getExceptionParameterLowerBoundAnnotations()
Renamed BaseTypeVisitor.checkExtendsImplements()
to checkExtendsAndImplements()
.
Class FieldInvariants
:
AnnotatedTypeFactory
isSuperInvariant()
has been renamed to isStrongerThan()
and no longer takes an AnnotatedTypeFactory
CFAbstractValue.validateSet()
takes a type factory rather than a QualifierHierarchy
.
Removed methods that have been deprecated for over two years.
Closed issues:
#4170, #5722, #5777, #5807, #5821, #5826, #5829, #5837, #5930.