diff options
Diffstat (limited to 'clang-tools-extra/docs/ReleaseNotes.rst')
-rw-r--r-- | clang-tools-extra/docs/ReleaseNotes.rst | 455 |
1 files changed, 0 insertions, 455 deletions
diff --git a/clang-tools-extra/docs/ReleaseNotes.rst b/clang-tools-extra/docs/ReleaseNotes.rst index 5758b5a..fd2cba4 100644 --- a/clang-tools-extra/docs/ReleaseNotes.rst +++ b/clang-tools-extra/docs/ReleaseNotes.rst @@ -69,9 +69,6 @@ Code completion Code actions ^^^^^^^^^^^^ -- The extract variable tweak gained support for extracting lambda expressions to a variable. -- A new tweak was added for turning unscoped into scoped enums. - Signature help ^^^^^^^^^^^^^^ @@ -100,467 +97,15 @@ The improvements are... Improvements to clang-tidy -------------------------- -- Preprocessor-level module header parsing is now disabled by default due to - the problems it caused in C++20 and above, leading to performance and code - parsing issues regardless of whether modules were used or not. This change - will impact only the following checks: - :doc:`modernize-replace-disallow-copy-and-assign-macro - <clang-tidy/checks/modernize/replace-disallow-copy-and-assign-macro>`, - :doc:`bugprone-reserved-identifier - <clang-tidy/checks/bugprone/reserved-identifier>`, and - :doc:`readability-identifier-naming - <clang-tidy/checks/readability/identifier-naming>`. Those checks will no - longer see macros defined in modules. Users can still enable this - functionality using the newly added command line option - `--enable-module-headers-parsing`. - -- Remove configuration option `AnalyzeTemporaryDestructors`, which was deprecated since - :program:`clang-tidy` 16. - -- Improved `--dump-config` to print check options in alphabetical order. - -- Improved :program:`clang-tidy-diff.py` script. - * Return exit code `1` if any :program:`clang-tidy` subprocess exits with - a non-zero code or if exporting fixes fails. - - * Accept a directory as a value for `-export-fixes` to export individual - yaml files for each compilation unit. - - * Introduce a `-config-file` option that forwards a configuration file to - :program:`clang-tidy`. Corresponds to the `--config-file` option in - :program:`clang-tidy`. - -- Improved :program:`run-clang-tidy.py` script. It now accepts a directory - as a value for `-export-fixes` to export individual yaml files for each - compilation unit. - - New checks ^^^^^^^^^^ -- New :doc:`bugprone-casting-through-void - <clang-tidy/checks/bugprone/casting-through-void>` check. - - Detects unsafe or redundant two-step casting operations involving ``void*``. - -- New :doc:`bugprone-chained-comparison - <clang-tidy/checks/bugprone/chained-comparison>` check. - - Check detects chained comparison operators that can lead to unintended - behavior or logical errors. - -- New :doc:`bugprone-compare-pointer-to-member-virtual-function - <clang-tidy/checks/bugprone/compare-pointer-to-member-virtual-function>` check. - - Detects equality comparison between pointer to member virtual function and - anything other than null-pointer-constant. - -- New :doc:`bugprone-inc-dec-in-conditions - <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check. - - Detects when a variable is both incremented/decremented and referenced inside - a complex condition and suggests moving them outside to avoid ambiguity in - the variable's value. - -- New :doc:`bugprone-incorrect-enable-if - <clang-tidy/checks/bugprone/incorrect-enable-if>` check. - - Detects incorrect usages of ``std::enable_if`` that don't name the nested - ``type`` type. - -- New :doc:`bugprone-multi-level-implicit-pointer-conversion - <clang-tidy/checks/bugprone/multi-level-implicit-pointer-conversion>` check. - - Detects implicit conversions between pointers of different levels of - indirection. - -- New :doc:`bugprone-optional-value-conversion - <clang-tidy/checks/bugprone/optional-value-conversion>` check. - - Detects potentially unintentional and redundant conversions where a value is - extracted from an optional-like type and then used to create a new instance - of the same optional-like type. - -- New :doc:`bugprone-unused-local-non-trivial-variable - <clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check. - - Warns when a local non trivial variable is unused within a function. - -- New :doc:`cppcoreguidelines-no-suspend-with-lock - <clang-tidy/checks/cppcoreguidelines/no-suspend-with-lock>` check. - - Flags coroutines that suspend while a lock guard is in scope at the - suspension point. - -- New :doc:`hicpp-ignored-remove-result - <clang-tidy/checks/hicpp/ignored-remove-result>` check. - - Ensure that the result of ``std::remove``, ``std::remove_if`` and - ``std::unique`` are not ignored according to rule 17.5.1. - -- New :doc:`misc-coroutine-hostile-raii - <clang-tidy/checks/misc/coroutine-hostile-raii>` check. - - Detects when objects of certain hostile RAII types persists across suspension - points in a coroutine. Such hostile types include scoped-lockable types and - types belonging to a configurable denylist. - -- New :doc:`modernize-use-constraints - <clang-tidy/checks/modernize/use-constraints>` check. - - Replace ``enable_if`` with C++20 requires clauses. - -- New :doc:`modernize-use-starts-ends-with - <clang-tidy/checks/modernize/use-starts-ends-with>` check. - - Checks whether a ``find`` or ``rfind`` result is compared with 0 and suggests - replacing with ``starts_with`` when the method exists in the class. Notably, - this will work with ``std::string`` and ``std::string_view``. - -- New :doc:`modernize-use-std-numbers - <clang-tidy/checks/modernize/use-std-numbers>` check. - - Finds constants and function calls to math functions that can be replaced - with C++20's mathematical constants from the ``numbers`` header and - offers fix-it hints. - -- New :doc:`performance-enum-size - <clang-tidy/checks/performance/enum-size>` check. - - Recommends the smallest possible underlying type for an ``enum`` or ``enum`` - class based on the range of its enumerators. - -- New :doc:`readability-avoid-nested-conditional-operator - <clang-tidy/checks/readability/avoid-nested-conditional-operator>` check. - - Identifies instances of nested conditional operators in the code. - -- New :doc:`readability-avoid-return-with-void-value - <clang-tidy/checks/readability/avoid-return-with-void-value>` check. - - Finds return statements with ``void`` values used within functions with - ``void`` result types. - -- New :doc:`readability-redundant-casting - <clang-tidy/checks/readability/redundant-casting>` check. - - Detects explicit type casting operations that involve the same source and - destination types, and subsequently recommend their removal. - -- New :doc:`readability-redundant-inline-specifier - <clang-tidy/checks/readability/redundant-inline-specifier>` check. - - Detects redundant ``inline`` specifiers on function and variable declarations. - -- New :doc:`readability-reference-to-constructed-temporary - <clang-tidy/checks/readability/reference-to-constructed-temporary>` check. - - Detects C++ code where a reference variable is used to extend the lifetime - of a temporary object that has just been constructed. - New check aliases ^^^^^^^^^^^^^^^^^ -- New alias :doc:`cppcoreguidelines-macro-to-enum - <clang-tidy/checks/cppcoreguidelines/macro-to-enum>` to :doc:`modernize-macro-to-enum - <clang-tidy/checks/modernize/macro-to-enum>` was added. - Changes in existing checks ^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Improved :doc:`abseil-string-find-startswith - <clang-tidy/checks/abseil/string-find-startswith>` check to also consider - ``std::basic_string_view`` in addition to ``std::basic_string`` by default. - -- Improved :doc:`bugprone-assert-side-effect - <clang-tidy/checks/bugprone/assert-side-effect>` check to report usage of - non-const ``<<`` and ``>>`` operators in assertions and fixed some false-positives - with const operators. - -- Improved :doc:`bugprone-dangling-handle - <clang-tidy/checks/bugprone/dangling-handle>` check to support functional - casting during type conversions at variable initialization, now with improved - compatibility for C++17 and later versions. - -- Improved :doc:`bugprone-exception-escape - <clang-tidy/checks/bugprone/exception-escape>` check by extending the default - check function names to include ``iter_swap`` and ``iter_move``. - -- Improved :doc:`bugprone-implicit-widening-of-multiplication-result - <clang-tidy/checks/bugprone/implicit-widening-of-multiplication-result>` check - to correctly emit fixes. - -- Improved :doc:`bugprone-lambda-function-name - <clang-tidy/checks/bugprone/lambda-function-name>` check by adding option - `IgnoreMacros` to ignore warnings in macros. - -- Improved :doc:`bugprone-non-zero-enum-to-bool-conversion - <clang-tidy/checks/bugprone/non-zero-enum-to-bool-conversion>` check by - eliminating false positives resulting from direct usage of bitwise operators. - -- Improved :doc:`bugprone-reserved-identifier - <clang-tidy/checks/bugprone/reserved-identifier>` check, so that it does not - warn on macros starting with underscore and lowercase letter. - -- Improved :doc:`bugprone-sizeof-expression - <clang-tidy/checks/bugprone/sizeof-expression>` check diagnostics to precisely - highlight specific locations, providing more accurate guidance. - -- Improved :doc:`bugprone-unchecked-optional-access - <clang-tidy/checks/bugprone/unchecked-optional-access>` check, so that it does - not crash during handling of optional values. - -- Improved :doc:`bugprone-undefined-memory-manipulation - <clang-tidy/checks/bugprone/undefined-memory-manipulation>` check to support - fixed-size arrays of non-trivial types. - -- Improved :doc:`bugprone-unused-return-value - <clang-tidy/checks/bugprone/unused-return-value>` check diagnostic message, - added support for detection of unused results when cast to non-``void`` type. - Casting to ``void`` no longer suppresses issues by default, control this - behavior with the new `AllowCastToVoid` option. - -- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables - <clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>` check - to ignore ``static`` variables declared within the scope of - ``class``/``struct``. - -- Improved :doc:`cppcoreguidelines-avoid-reference-coroutine-parameters - <clang-tidy/checks/cppcoreguidelines/avoid-reference-coroutine-parameters>` - check to ignore false positives related to matching parameters of non - coroutine functions and increase issue detection for cases involving type - aliases with references. - -- Improved :doc:`cppcoreguidelines-missing-std-forward - <clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check to - address false positives in the capture list and body of lambdas. - -- Improved :doc:`cppcoreguidelines-narrowing-conversions - <clang-tidy/checks/cppcoreguidelines/narrowing-conversions>` check by - extending the `IgnoreConversionFromTypes` option to include types without a - declaration, such as built-in types. - -- Improved :doc:`cppcoreguidelines-prefer-member-initializer - <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check to - ignore delegate constructors and ignore re-assignment for reference or when - initialization depend on field that is initialized before. Additionally, it - now provides valid fixes for member variables initialized with macros. - -- Improved :doc:`cppcoreguidelines-pro-bounds-array-to-pointer-decay - <clang-tidy/checks/cppcoreguidelines/pro-bounds-array-to-pointer-decay>` check - to ignore predefined expression (e.g., ``__func__``, ...). - -- Improved :doc:`cppcoreguidelines-pro-bounds-constant-array-index - <clang-tidy/checks/cppcoreguidelines/pro-bounds-constant-array-index>` check - to perform checks on derived classes of ``std::array``. - -- Improved :doc:`cppcoreguidelines-pro-type-const-cast - <clang-tidy/checks/cppcoreguidelines/pro-type-const-cast>` check to ignore - casts to ``const`` or ``volatile`` type (controlled by `StrictMode` option) - and casts in implicitly invoked code. - -- Improved :doc:`cppcoreguidelines-pro-type-member-init - <clang-tidy/checks/cppcoreguidelines/pro-type-member-init>` check to ignore - dependent delegate constructors. - -- Improved :doc:`cppcoreguidelines-pro-type-static-cast-downcast - <clang-tidy/checks/cppcoreguidelines/pro-type-static-cast-downcast>` check to - disregard casts on non-polymorphic types when the `StrictMode` option is set - to `false`. - -- Improved :doc:`cppcoreguidelines-pro-type-vararg - <clang-tidy/checks/cppcoreguidelines/pro-type-vararg>` check to ignore - false-positives in unevaluated context (e.g., ``decltype``, ``sizeof``, ...). - -- Improved :doc:`cppcoreguidelines-rvalue-reference-param-not-moved - <clang-tidy/checks/cppcoreguidelines/rvalue-reference-param-not-moved>` check - to ignore unused parameters when they are marked as unused and parameters of - deleted functions and constructors. - -- Improved :doc:`google-readability-casting - <clang-tidy/checks/google/readability-casting>` check to ignore constructor - calls disguised as functional casts. - -- Improved :doc:`google-runtime-int <clang-tidy/checks/google/runtime-int>` - check to ignore false positives on user defined-literals. - -- Improved :doc:`llvm-namespace-comment - <clang-tidy/checks/llvm/namespace-comment>` check to provide fixes for - ``inline`` namespaces in the same format as :program:`clang-format`. - -- Improved :doc:`llvmlibc-callee-namespace - <clang-tidy/checks/llvmlibc/callee-namespace>` to support - customizable namespace. This matches the change made to implementation in - namespace. - -- Improved :doc:`llvmlibc-implementation-in-namespace - <clang-tidy/checks/llvmlibc/implementation-in-namespace>` to support - customizable namespace. This further allows for testing the libc when the - system-libc is also LLVM's libc. - -- Improved :doc:`llvmlibc-inline-function-decl - <clang-tidy/checks/llvmlibc/inline-function-decl>` to properly ignore implicit - functions, such as struct constructors, and explicitly deleted functions. - -- Improved :doc:`misc-const-correctness - <clang-tidy/checks/misc/const-correctness>` check to avoid false positive when - using pointer to member function. Additionally, the check no longer emits - a diagnostic when a variable that is not type-dependent is an operand of a - type-dependent binary operator. Improved performance of the check through - optimizations. The check no longer emits a diagnostic for non-parameter-pack - variables in C++17 fold expressions. - -- Improved :doc:`misc-include-cleaner - <clang-tidy/checks/misc/include-cleaner>` check by adding option - `DeduplicateFindings` to output one finding per symbol occurrence, avoid - inserting the same header multiple times, fix a bug where `IgnoreHeaders` - option won't work with verbatim/std headers. - -- Improved :doc:`misc-redundant-expression - <clang-tidy/checks/misc/redundant-expression>` check to ignore - false-positives in unevaluated context (e.g., ``decltype``). - -- Improved :doc:`misc-static-assert - <clang-tidy/checks/misc/static-assert>` check to ignore false-positives when - referring to non-``constexpr`` variables in non-unevaluated context. - -- Improved :doc:`misc-unused-using-decls - <clang-tidy/checks/misc/unused-using-decls>` check to avoid false positive when - using in elaborated type and only check C++ files. - -- Improved :doc:`modernize-avoid-bind - <clang-tidy/checks/modernize/avoid-bind>` check to - not emit a ``return`` for fixes when the function returns ``void`` and to - provide valid fixes for cases involving bound C++ operators. - -- Improved :doc:`modernize-loop-convert - <clang-tidy/checks/modernize/loop-convert>` to support for-loops with - iterators initialized by free functions like ``begin``, ``end``, or ``size`` - and avoid crash for array of dependent array and non-dereferenceable builtin - types used as iterators. - -- Improved :doc:`modernize-make-shared - <clang-tidy/checks/modernize/make-shared>` check to support - ``std::shared_ptr`` implementations that inherit the ``reset`` method from a - base class. - -- Improved :doc:`modernize-return-braced-init-list - <clang-tidy/checks/modernize/return-braced-init-list>` check to ignore - false-positives when constructing the container with ``count`` copies of - elements with value ``value``. - -- Improved :doc:`modernize-use-auto - <clang-tidy/checks/modernize/use-auto>` to avoid create incorrect fix hints - for pointer to array type and pointer to function type. - -- Improved :doc:`modernize-use-emplace - <clang-tidy/checks/modernize/use-emplace>` to not replace aggregates that - ``emplace`` cannot construct with aggregate initialization. - -- Improved :doc:`modernize-use-equals-delete - <clang-tidy/checks/modernize/use-equals-delete>` check to ignore - false-positives when special member function is actually used or implicit. - -- Improved :doc:`modernize-use-nullptr - <clang-tidy/checks/modernize/use-nullptr>` check by adding option - `IgnoredTypes` that can be used to exclude some pointer types. - -- Improved :doc:`modernize-use-std-print - <clang-tidy/checks/modernize/use-std-print>` check to accurately generate - fixes for reordering arguments. - -- Improved :doc:`modernize-use-using - <clang-tidy/checks/modernize/use-using>` check to fix function pointer and - forward declared ``typedef`` correctly. Added option `IgnoreExternC` to ignore - ``typedef`` declaration in ``extern "C"`` scope. - -- Improved :doc:`performance-faster-string-find - <clang-tidy/checks/performance/faster-string-find>` check to properly escape - single quotes. - -- Improved :doc:`performance-for-range-copy - <clang-tidy/checks/performance/for-range-copy>` check to handle cases where - the loop variable is a structured binding. - -- Improved :doc:`performance-noexcept-move-constructor - <clang-tidy/checks/performance/noexcept-move-constructor>` to better handle - conditional ``noexcept`` expressions, eliminating false-positives. - -- Improved :doc:`performance-noexcept-swap - <clang-tidy/checks/performance/noexcept-swap>` check to enforce a stricter - match with the swap function signature and better handling of condition - ``noexcept`` expressions, eliminating false-positives. ``iter_swap`` function - name is checked by default. - -- Improved :doc:`readability-braces-around-statements - <clang-tidy/checks/readability/braces-around-statements>` check to - ignore false-positive for ``if constexpr`` in lambda expression. - -- Improved :doc:`readability-avoid-const-params-in-decls - <clang-tidy/checks/readability/avoid-const-params-in-decls>` diagnostics to - highlight the ``const`` location - -- Improved :doc:`readability-container-contains - <clang-tidy/checks/readability/container-contains>` to correctly handle - integer literals with suffixes in fix-its. - -- Improved :doc:`readability-container-size-empty - <clang-tidy/checks/readability/container-size-empty>` check to - detect comparison between string and empty string literals and support - ``length()`` method as an alternative to ``size()``. Resolved false positives - tied to negative values from size-like methods, and one triggered by size - checks below zero. - -- Improved :doc:`readability-function-size - <clang-tidy/checks/readability/function-size>` check configuration to use - `none` rather than `-1` to disable some parameters. - -- Improved :doc:`readability-identifier-naming - <clang-tidy/checks/readability/identifier-naming>` check to issue accurate - warnings when a type's forward declaration precedes its definition. - Additionally, it now provides appropriate warnings for ``struct`` and - ``union`` in C, while also incorporating support for the - ``Leading_upper_snake_case`` naming convention. The handling of ``typedef`` - has been enhanced, particularly within complex types like function pointers - and cases where style checks were omitted when functions started with macros. - Added support for C++20 ``concept`` declarations. ``Camel_Snake_Case`` and - ``camel_Snake_Case`` now detect more invalid identifier names. Fields in - anonymous records (i.e. anonymous structs and unions) now can be checked with - the naming rules associated with their enclosing scopes rather than the naming - rules of public ``struct``/``union`` members. - -- Improved :doc:`readability-implicit-bool-conversion - <clang-tidy/checks/readability/implicit-bool-conversion>` check to take - do-while loops into account for the `AllowIntegerConditions` and - `AllowPointerConditions` options. It also now provides more consistent - suggestions when parentheses are added to the return value or expressions. - It also ignores false-positives for comparison containing bool bitfield. - -- Improved :doc:`readability-misleading-indentation - <clang-tidy/checks/readability/misleading-indentation>` check to ignore - false-positives for line started with empty macro. - -- Improved :doc:`readability-non-const-parameter - <clang-tidy/checks/readability/non-const-parameter>` check to ignore - false-positives in initializer list of record. - -- Improved :doc:`readability-redundant-member-init - <clang-tidy/checks/readability/redundant-member-init>` check to now also - detect redundant in-class initializers. - -- Improved :doc:`readability-simplify-boolean-expr - <clang-tidy/checks/readability/simplify-boolean-expr>` check by adding the - new option `IgnoreMacros` that allows to ignore boolean expressions originating - from expanded macros. - -- Improved :doc:`readability-simplify-subscript-expr - <clang-tidy/checks/readability/simplify-subscript-expr>` check by extending - the default value of the `Types` option to include ``std::span``. - -- Improved :doc:`readability-static-accessed-through-instance - <clang-tidy/checks/readability/static-accessed-through-instance>` check to - identify calls to static member functions with out-of-class inline definitions. - Removed checks ^^^^^^^^^^^^^^ |