@@ -1234,33 +1234,112 @@ Code Completion
1234
1234
1235
1235
Static Analyzer
1236
1236
---------------
1237
- - Fixed a crash when C++20 parenthesized initializer lists are used. This issue
1238
- was causing a crash in clang-tidy. (#GH136041)
1239
1237
1240
1238
New features
1241
1239
^^^^^^^^^^^^
1242
1240
1241
+ - Added support for the ``[[clang::assume(cond)]] `` attribute, treating it as
1242
+ ``__builtin_assume(cond) `` for better static analysis. (#GH129234)
1243
+
1244
+ - Introduced per-entry-point statistics to provide more detailed analysis metrics.
1245
+ Documentation: :doc: `analyzer/developer-docs/Statistics ` (#GH131175)
1246
+
1247
+ - Added time-trace scopes for high-level analyzer steps to improve performance
1248
+ debugging. Documentation: :doc: `analyzer/developer-docs/PerformanceInvestigation `
1249
+ (#GH125508, #GH125884)
1250
+
1251
+ - Enhanced the ``check::BlockEntrance `` checker callback to provide more granular
1252
+ control over block-level analysis.
1253
+ `Documentation (check::BlockEntrance)
1254
+ <https://clang.llvm.org/doxygen/CheckerDocumentation_8cpp_source.html> `_
1255
+ (#GH140924)
1256
+
1257
+ - Added a new checker ``core.FixedAddressDereference `` to detect dereferences
1258
+ of fixed addresses, which can be useful for finding hard-coded memory
1259
+ accesses. (#GH127191, #GH132404)
1260
+
1243
1261
Crash and bug fixes
1244
1262
^^^^^^^^^^^^^^^^^^^
1245
1263
1246
- - Fixed a crash in ``UnixAPIMisuseChecker `` and ``MallocChecker `` when analyzing
1264
+ - Fixed a crash when C++20 parenthesized initializer lists are used.
1265
+ This affected a crash of the well-known lambda overloaded pattern.
1266
+ (#GH136041, #GH135665)
1267
+
1268
+ - Dropped an unjustified assertion, that was triggered in ``BugReporterVisitors.cpp ``
1269
+ for variable initialization detection. (#GH125044)
1270
+
1271
+ - Fixed a crash in ``unix.API `` and ``unix.Malloc `` when analyzing
1247
1272
code with non-standard ``getline `` or ``getdelim `` function signatures. (#GH144884)
1248
1273
1274
+ - Fixed crashes involving ``__builtin_bit_cast ``. (#GH139188)
1275
+
1276
+ - ``__datasizeof `` (C++) and ``_Countof `` (C) no longer cause a failed assertion
1277
+ when given an operand of VLA type. (#GH151711)
1278
+
1279
+ - Fixed a crash in ``alpha.core.CastSize ``. (#GH134387)
1280
+
1281
+ - Some ``cplusplus.PlacementNew `` false positives were fixed. (#GH150161)
1282
+
1249
1283
Improvements
1250
1284
^^^^^^^^^^^^
1251
1285
1286
+ - Added option to assume at least one iteration in loops to reduce false positives.
1287
+ (#GH125494)
1288
+
1252
1289
- The checker option ``optin.cplusplus.VirtualCall:PureOnly `` was removed,
1253
- because it had been deprecated since 2019 and it is completely useless (it
1254
- was kept only for compatibility with pre-2019 versions, setting it to true is
1255
- equivalent to completely disabling the checker).
1290
+ because it had been deprecated since 2019. (#GH131823)
1291
+
1292
+ - Enhanced the ``core.StackAddressEscape `` to detect more cases of stack address
1293
+ escapes, including return values for child stack frames. (#GH126620, #GH126986)
1294
+
1295
+ - Improved the ``unix.BlockInCriticalSection `` to recognize ``O_NONBLOCK ``
1296
+ streams and suppress reports in those cases. (#GH127049)
1297
+
1298
+ - Better support for lambda-converted function pointers in analysis. (#GH144906)
1299
+
1300
+ - Improved modeling of ``getcwd `` function in ``unix.StdCLibraryFunctions `` checker.
1301
+ (#GH141076)
1302
+
1303
+ - Enhanced the ``optin.core.EnumCastOutOfRange `` checker to ignore ``[[clang::flag_enum]] ``
1304
+ enums. (#GH141232)
1305
+
1306
+ - Improved handling of structured bindings captured by lambdas. (#GH132579, #GH91835)
1307
+
1308
+ - Fixed unnamed bitfield handling in ``optin.cplusplus.UninitializedObject ``. (#GH132427, #GH132001)
1309
+
1310
+ - Enhanced iterator checker modeling for ``insert `` operations. (#GH132596)
1311
+
1312
+ - Improved ``format `` attribute handling in ``optin.taint.GenericTaint ``. (#GH132765)
1313
+
1314
+ - Added support for ``consteval `` in ``ConditionBRVisitor::VisitTerminator ``.
1315
+ (#GH146859, #GH139130)
1316
+
1317
+ - C standard streams are no longer invalidated by all C library function calls.
1318
+ (#GH147766)
1319
+
1320
+ - Enhanced store management with region-store-binding-limit to improve performance.
1321
+ See `region-store-max-binding-fanout
1322
+ <https://clang.llvm.org/docs/analyzer/user-docs/Options.html#region-store-max-binding-fanout> `_
1323
+ config option. Overriding these options are discouraged, unless you know what you do.
1324
+ (#GH127602)
1325
+
1326
+ - Updated undefined assignment checker (``core.uninitialized.Assign ``) diagnostics
1327
+ to avoid using the term ``garbage ``. (#GH126596)
1328
+
1329
+ - Fixed false memory leak reports involving placement new. (#GH144341)
1330
+
1331
+ - Avoided unnecessary super region invalidation in ``unix.cstring.* `` checkers.
1332
+ (#GH146212, #GH143807)
1333
+
1334
+ - Enhanced handling of tainted division-by-zero error paths in the
1335
+ ``optin.taint.TaintedDiv `` checker. (#GH144491)
1256
1336
1257
1337
Moved checkers
1258
1338
^^^^^^^^^^^^^^
1259
1339
1260
- - After lots of improvements, the checker ``alpha.security.ArrayBoundV2 `` is
1340
+ - After lots of improvements, the checker ``alpha.security.ArrayBoundV2 `` was
1261
1341
renamed to ``security.ArrayBound ``. As this checker is stable now, the old
1262
- checker ``alpha.security.ArrayBound `` (which was searching for the same kind
1263
- of bugs with an different, simpler and less accurate algorithm) is removed.
1342
+ checker ``alpha.security.ArrayBound `` was removed.
1264
1343
1265
1344
.. _release-notes-sanitizers :
1266
1345
0 commit comments