@@ -603,10 +603,77 @@ libclang
603
603
604
604
- ...
605
605
606
+ .. _release-notes-clang-static-analyzer :
607
+
606
608
Static Analyzer
607
609
---------------
608
610
609
- - ...
611
+ - Improved the analyzer's understanding of inherited C++ constructors.
612
+
613
+ - Improved the analyzer's understanding of dynamic class method dispatching in
614
+ Objective-C.
615
+
616
+ - Greatly improved the analyzer's constraint solver by better understanding
617
+ when constraints are imposed on multiple symbolic values that are known to be
618
+ equal or known to be non-equal. It will now also efficiently reject impossible
619
+ if-branches between known comparison expressions.
620
+
621
+ - Added :ref: `on-demand parsing <ctu-on-demand >` capability to Cross Translation
622
+ Unit (CTU) analysis.
623
+
624
+ - Numerous fixes and improvements for the HTML output.
625
+
626
+ - New checker: :ref: `alpha.core.C11Lock <alpha-core-C11Lock >` and
627
+ :ref: `alpha.fuchsia.Lock <alpha-fuchsia-lock >` checks for their respective
628
+ locking APIs.
629
+
630
+ - New checker: :ref: `alpha.security.cert.pos.34c <alpha-security-cert-pos-34c >`
631
+ finds calls to ``putenv `` where a pointer to an autmoatic variable is passed
632
+ as an argument.
633
+
634
+ - New checker: :ref: `webkit.NoUncountedMemberChecker
635
+ <webkit-NoUncountedMemberChecker>` to enforce the existence of virtual
636
+ destructors for all uncounted types used as base classes.
637
+
638
+ - New checker: :ref: `webkit.RefCntblBaseVirtualDtor
639
+ <webkit-RefCntblBaseVirtualDtor>` checks that only ref-counted types
640
+ are used as class members, not raw pointers and references to uncounted
641
+ types.
642
+
643
+ - New checker: :ref: `alpha.cplusplus.SmartPtr <alpha-cplusplus-SmartPtr >` check
644
+ for dereference of null smart pointers.
645
+
646
+ - Moved ``PlacementNewChecker `` out of alpha, making it enabled by default.
647
+
648
+ - Added support for multi-dimensional variadic arrays in ``core.VLASize ``.
649
+
650
+ - Added a check for insufficient storage in array placement new calls, as well
651
+ as support for alignment variants to ``cplusplus.PlacementNew ``.
652
+
653
+ - While still in alpha, ``alpha.unix.PthreadLock ``, the iterator and container
654
+ modeling infrastructure, ``alpha.unix.Stream ``, and taint analysis were
655
+ improved greatly. An ongoing, currently off-by-default improvement was made on
656
+ the pre-condition modeling of several functions defined in the POSIX standard.
657
+
658
+ - Improved the warning messages of several checkers.
659
+
660
+ - Fixed a few remaining cases of checkers emitting reports under incorrect
661
+ checker names, and employed a few restrictions to more easily identify and
662
+ avoid such errors.
663
+
664
+ - Moved several non-reporting checkers (those that model, among other things,
665
+ standard functions, but emit no diagnostics) to be listed under
666
+ ``-analyzer-checker-help-developer `` instead of ``-analyzer-checker-help ``.
667
+ Manually enabling or disabling checkers found on this list is not supported
668
+ in production.
669
+
670
+ - Numerous fixes for crashes, false positives and false negatives in
671
+ ``unix.Malloc ``, ``osx.cocoa.NSError ``, and several other checkers.
672
+
673
+ - Implemented a dockerized testing system to more easily determine the
674
+ correctness and performance impact of a change to the static analyzer itself.
675
+ The currently beta-version tool is found in
676
+ ``(llvm-project repository)/clang/utils/analyzer/SATest.py ``.
610
677
611
678
.. _release-notes-ubsan :
612
679
0 commit comments