Releases: typetools/checker-framework
Checker Framework 3.49.0
Version 3.49.0 (February 3, 2025)
User-visible changes:
The Optional Checker is more precise for Optional
values resulting from
operations on container types (e.g., List
, Map
, Iterable
). It supports
two new annotations:
@NonEmpty
@UnknownNonEmpty
The Signature Checker no longer supports @BinaryNameWithoutPackage
because
it is equivalent to @Identifier
; use @Identifier
instead.
The JavaStubifier implementation now appears in package org.checkerframework.framework.stubifier.JavaStubifier
.
Closed issues:
Checker Framework 3.48.4
Checker Framework 3.48.3
Checker Framework 3.48.2
Checker Framework 3.48.1
Version 3.48.1 (October 11, 2024)
User-visible changes:
The Returns Receiver sub-checker is now disabled by default when running the Resource Leak Checker, as usually it is not needed and it adds overhead. To enable it, use the new -AenableReturnsReceiverForRlc
command-line argument.
Closed issues:
Checker Framework 3.48.0
Version 3.48.0 (October 2, 2024)
User-visible changes:
The new SqlQuotesChecker prevents errors in quoting in SQL queries. It prevents injection attacks that exploit quoting errors.
Aggregate Checkers now interleave error messages so that all errors about a line of code appear together.
Closed issues:
#3568, #6725, #6753, #6769, #6770, #6780, #6785, #6795, #6804, #6811, #6825.
Checker Framework 3.47.0
Version 3.47.0 (September 3, 2024)
User-visible changes:
The Checker Framework runs under JDK 22 -- that is, it runs on a version 22 JVM.
The Checker Framework runs under JDK 23 -- that is, it runs on a version 23 JVM.
The Optional Checker no longer supports the @OptionalBottom
annotation.
Implementation details:
Removed annotations:
@OptionalBottom
Closed issues:
Checker Framework 3.46.0
Checker Framework 3.45.0
Checker Framework 3.44.0
Version 3.44.0 (June 3, 2024)
Implementation details:
Removed methods:
AbstractAnalysis.readFromStore()
: useMap.get()
Renamed methods:
CFAbstractStore.methodValues()
=>methodCallExpressions()
AbstractCFGVisualizer.format()
=>escapeString()
Renamed fields:
AnalysisResult.stores
=>inputs
Deprecated methods:
AbstractAnalysis.getContainingMethod()
=>getEnclosingMethod()
AbstractAnalysis.getContainingClass()
=>getEnclosingMethod()
ControlFlowGraph.getContainingMethod()
=>getEnclosingMethod()
ControlFlowGraph.getContainingClass()
=>getEnclosingClass()
JavaExpression.isUnassignableByOtherCode()
=>isAssignableByOtherCode()
JavaExpression.isUnmodifiableByOtherCode()
=>isModifiableByOtherCode()
BaseTypeVisitor#visitMethod(MethodTree, Void)
is now final
.
Subclasses should override BaseTypeVisitor#processMethodTree(MethodTree)
.
Closed issues:
#802, #2676, #2780, #2926, #3378, #3612, #3764, #4007, #4964, #5070, #5176, #5237, #5541, #6046, #6382, #6388, #6566, #6568, #6570, #6576, #6577, #6631, #6635, #6636, #6644.