====================================================
Extra Clang Tools |release| |ReleaseNotesTitle|
====================================================

.. contents::
   :local:
   :depth: 3

Written by the `LLVM Team <https://llvm.org/>`_

.. only:: PreRelease

  .. warning::
     These are in-progress notes for the upcoming Extra Clang Tools |version| release.
     Release notes for previous releases can be found on
     `the Download Page <https://releases.llvm.org/download.html>`_.

Introduction
============

This document contains the release notes for the Extra Clang Tools, part of the
Clang release |release|. Here we describe the status of the Extra Clang Tools in
some detail, including major improvements from the previous release and new
feature work. All LLVM releases may be downloaded from the `LLVM releases web
site <https://llvm.org/releases/>`_.

For more information about Clang or LLVM, including information about
the latest release, please see the `Clang Web Site <https://clang.llvm.org>`_ or
the `LLVM Web Site <https://llvm.org>`_.

Note that if you are reading this file from a Git checkout or the
main Clang web page, this document applies to the *next* release, not
the current one. To see the release notes for a specific release, please
see the `releases page <https://llvm.org/releases/>`_.

What's New in Extra Clang Tools |release|?
==========================================

Some of the major new features and improvements to Extra Clang Tools are listed
here. Generic improvements to Extra Clang Tools as a whole or to its underlying
infrastructure are described first, followed by tool-specific sections.

Major New Features
------------------

...

Improvements to clangd
----------------------

- Introduced exmperimental support for C++20 Modules. The experimental support can
  be enabled by `-experimental-modules-support` option. It is in an early development
  stage and may not perform efficiently in real-world scenarios.

Inlay hints
^^^^^^^^^^^

Diagnostics
^^^^^^^^^^^

Semantic Highlighting
^^^^^^^^^^^^^^^^^^^^^

- Improved semantic token coverage in some edge cases, e.g. IndirectFieldDecl

Compile flags
^^^^^^^^^^^^^

Hover
^^^^^

Code completion
^^^^^^^^^^^^^^^

- ``--function-arg-placeholders=0`` is now respected for variable template argument lists
   as well
- Macro proposals now use the completion item kind ``Constant`` (for object-like macros)
  or ``Function`` (for function-style macros) even for proposals coming from the index

Code actions
^^^^^^^^^^^^

- The "extract variable" tweak is no longer offered for the initializer expression of a
  declaration
- The tweak for turning unscoped into scoped enums now removes redundant prefixes
  from the enum values.
- Support "move function body out-of-line" in non-header files as well

Signature help
^^^^^^^^^^^^^^

- Signature help now shows function argument names for calls through pointers to
  functions in struct fields

Cross-references
^^^^^^^^^^^^^^^^

- Improve go-to-definition for some concept references

Document outline
^^^^^^^^^^^^^^^^

- Improved precision of document outline information for symbols whose definitions
  involve macro expansions

Clang-tidy integration
^^^^^^^^^^^^^^^^^^^^^^

- The quick fix for clang-tidy's ``readability-identifier-naming`` diagnostic is now
  hooked to invoke ``textDocument/rename``, renaming the identifier across the whole
  project rather than just the translation unit of the diagnostic
- ``misc-const-correctness`` can now be enabled with ``FastCheckFilter: None``
  (previously clangd would force it off unconditionally due to its run time)

Objective-C
^^^^^^^^^^^

- Added support for renaming Objective-C methods

Miscellaneous
^^^^^^^^^^^^^

- Worked around a clang-format bug that caused memory exhaustion when opening some large
  ``.h`` files due to the formatter's language guessing heuristic (#GH85703)
- Various other stability improvements, e.g. crash fixes
- Added a boolean option `AnalyzeAngledIncludes` to `Includes` config section,
  which allows to enable unused includes detection for all angled ("system") headers.
  At this moment umbrella headers are not supported, so enabling this option
  may result in false-positives.

Improvements to clang-doc
-------------------------

Improvements to clang-query
---------------------------

- Added the `file` command to dynamically load a list of commands and matchers
  from an external file, allowing the cost of reading the compilation database
  and building the AST to be imposed just once for faster prototyping.

- Removed support for ``enable output srcloc``. Fixes #GH82591

Improvements to clang-rename
----------------------------

The improvements are...

Improvements to clang-tidy
--------------------------

- Improved :program:`run-clang-tidy.py` script. Added argument `-source-filter`
  to filter source files from the compilation database, via a RegEx. In a
  similar fashion to what `-header-filter` does for header files.
  Added progress indicator with a number of processed files and the runtime of
  each invocation after completion.

- Improved :program:`check_clang_tidy.py` script. Added argument `-export-fixes`
  to aid in clang-tidy and test development.

- Fixed bug where big values for unsigned check options overflowed into negative values
  when being printed with `--dump-config`.

- Fixed `--verify-config` option not properly parsing checks when using the
  literal operator in the `.clang-tidy` config.

- Added argument `--exclude-header-filter` and config option `ExcludeHeaderFilterRegex`
  to exclude headers from analysis via a RegEx.

- Added argument `--allow-no-checks` to suppress "no checks enabled" error
  when disabling all of the checks by `--checks='-*'`.

New checks
^^^^^^^^^^

- New :doc:`boost-use-ranges
  <clang-tidy/checks/boost/use-ranges>` check.

  Detects calls to standard library iterator algorithms that could be replaced
  with a Boost ranges version instead.

- New :doc:`bugprone-crtp-constructor-accessibility
  <clang-tidy/checks/bugprone/crtp-constructor-accessibility>` check.

  Detects error-prone Curiously Recurring Template Pattern usage, when the CRTP
  can be constructed outside itself and the derived class.

- New :doc:`bugprone-pointer-arithmetic-on-polymorphic-object
  <clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>` check.

  Finds pointer arithmetic performed on classes that contain a virtual function.

- New :doc:`bugprone-return-const-ref-from-parameter
  <clang-tidy/checks/bugprone/return-const-ref-from-parameter>` check.

  Detects return statements that return a constant reference parameter as constant
  reference. This may cause use-after-free errors if the caller uses xvalues as
  arguments.

- New :doc:`bugprone-suspicious-stringview-data-usage
  <clang-tidy/checks/bugprone/suspicious-stringview-data-usage>` check.

  Identifies suspicious usages of ``std::string_view::data()`` that could lead
  to reading out-of-bounds data due to inadequate or incorrect string null
  termination.

- New :doc:`misc-use-internal-linkage
  <clang-tidy/checks/misc/use-internal-linkage>` check.

  Detects variables and functions that can be marked as static or moved into
  an anonymous namespace to enforce internal linkage.

- New :doc:`modernize-min-max-use-initializer-list
  <clang-tidy/checks/modernize/min-max-use-initializer-list>` check.

  Replaces nested ``std::min`` and ``std::max`` calls with an initializer list
  where applicable.

- New :doc:`modernize-use-designated-initializers
  <clang-tidy/checks/modernize/use-designated-initializers>` check.

  Finds initializer lists for aggregate types that could be
  written as designated initializers instead.

- New :doc:`modernize-use-ranges
  <clang-tidy/checks/modernize/use-ranges>` check.

  Detects calls to standard library iterator algorithms that could be replaced
  with a ranges version instead.

- New :doc:`modernize-use-std-format
  <clang-tidy/checks/modernize/use-std-format>` check.

  Converts calls to ``absl::StrFormat``, or other functions via
  configuration options, to C++20's ``std::format``, or another function
  via a configuration option, modifying the format string appropriately and
  removing now-unnecessary calls to ``std::string::c_str()`` and
  ``std::string::data()``.

- New :doc:`readability-enum-initial-value
  <clang-tidy/checks/readability/enum-initial-value>` check.

  Enforces consistent style for enumerators' initialization, covering three
  styles: none, first only, or all initialized explicitly.

- New :doc:`readability-math-missing-parentheses
  <clang-tidy/checks/readability/math-missing-parentheses>` check.

  Check for missing parentheses in mathematical expressions that involve
  operators of different priorities.

- New :doc:`readability-use-std-min-max
  <clang-tidy/checks/readability/use-std-min-max>` check.

  Replaces certain conditional statements with equivalent calls to
  ``std::min`` or ``std::max``.

New check aliases
^^^^^^^^^^^^^^^^^

- New alias :doc:`cert-ctr56-cpp <clang-tidy/checks/cert/ctr56-cpp>` to
  :doc:`bugprone-pointer-arithmetic-on-polymorphic-object
  <clang-tidy/checks/bugprone/pointer-arithmetic-on-polymorphic-object>`
  was added.

- New alias :doc:`cert-int09-c <clang-tidy/checks/cert/int09-c>` to
  :doc:`readability-enum-initial-value <clang-tidy/checks/readability/enum-initial-value>`
  was added.

Changes in existing checks
^^^^^^^^^^^^^^^^^^^^^^^^^^

- Improved :doc:`bugprone-assert-side-effect
  <clang-tidy/checks/bugprone/assert-side-effect>` check by detecting side
  effect from calling a method with non-const reference parameters.

- Improved :doc:`bugprone-assignment-in-if-condition
  <clang-tidy/checks/bugprone/assignment-in-if-condition>` check by ignoring
  assignments in the C++20 ``requires`` clause.

- Improved :doc:`bugprone-casting-through-void
  <clang-tidy/checks/bugprone/casting-through-void>` check by ignoring casts
  where source is already a ``void``` pointer, making middle ``void`` pointer
  casts bug-free.

- Improved :doc:`bugprone-exception-escape
  <clang-tidy/checks/bugprone/exception-escape>`  check to correctly detect exception 
  handler of type ``CV void *`` as catching all  ``CV`` compatible pointer types.

- Improved :doc:`bugprone-forwarding-reference-overload
  <clang-tidy/checks/bugprone/forwarding-reference-overload>`
  check to ignore deleted constructors which won't hide other overloads.

- Improved :doc:`bugprone-implicit-widening-of-multiplication-result
  <clang-tidy/checks/bugprone/implicit-widening-of-multiplication-result>` check
  by adding an option to ignore constant expressions of signed integer types
  that fit in the source expression type.

- Improved :doc:`bugprone-inc-dec-in-conditions
  <clang-tidy/checks/bugprone/inc-dec-in-conditions>` check to ignore code
  within unevaluated contexts, such as ``decltype``.

- Improved :doc:`bugprone-lambda-function-name<clang-tidy/checks/bugprone/lambda-function-name>`
  check by ignoring ``__func__`` macro in lambda captures, initializers of
  default parameters and nested function declarations.

- Improved :doc:`bugprone-multi-level-implicit-pointer-conversion
  <clang-tidy/checks/bugprone/multi-level-implicit-pointer-conversion>` check
  by ignoring implicit pointer conversions that are part of a cast expression.

- 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
  within parentheses.

- Improved :doc:`bugprone-optional-value-conversion
  <clang-tidy/checks/bugprone/optional-value-conversion>` check by eliminating
  false positives resulting from use of optionals in unevaluated context.

- Improved :doc:`bugprone-sizeof-expression
  <clang-tidy/checks/bugprone/sizeof-expression>` check by clarifying the
  diagnostics, eliminating some false positives and adding a new
  (off-by-default) option `WarnOnSizeOfPointer` that reports all
  ``sizeof(pointer)`` expressions (except for a few that are idiomatic).

- Improved :doc:`bugprone-suspicious-include
  <clang-tidy/checks/bugprone/suspicious-include>` check by replacing the local
  options `HeaderFileExtensions` and `ImplementationFileExtensions` by the
  global options of the same name.

- Improved :doc:`bugprone-too-small-loop-variable
  <clang-tidy/checks/bugprone/too-small-loop-variable>` check by incorporating
  better support for ``const`` loop boundaries.

- Improved :doc:`bugprone-unused-local-non-trivial-variable
  <clang-tidy/checks/bugprone/unused-local-non-trivial-variable>` check by
  ignoring local variable with ``[maybe_unused]`` attribute.

- Improved :doc:`bugprone-unused-return-value
  <clang-tidy/checks/bugprone/unused-return-value>` check by updating the
  parameter `CheckedFunctions` to support regexp, avoiding false positive for
  function with the same prefix as the default argument, e.g. ``std::unique_ptr``
  and ``std::unique``, avoiding false positive for assignment operator overloading.

- Improved :doc:`bugprone-use-after-move
  <clang-tidy/checks/bugprone/use-after-move>` check to also handle
  calls to ``std::forward``. Fixed sequencing of designated initializers. Fixed
  sequencing of callees: In C++17 and later, the callee of a function is guaranteed
  to be sequenced before the arguments, so don't warn if the use happens in the
  callee and the move happens in one of the arguments.

- Improved :doc:`cppcoreguidelines-avoid-non-const-global-variables
  <clang-tidy/checks/cppcoreguidelines/avoid-non-const-global-variables>` check
  with a new option `AllowInternalLinkage` to disable the warning for variables
  with internal linkage.

- Improved :doc:`cppcoreguidelines-macro-usage
  <clang-tidy/checks/cppcoreguidelines/macro-usage>` check by ignoring macro with
  hash preprocessing token.

- Improved :doc:`cppcoreguidelines-missing-std-forward
  <clang-tidy/checks/cppcoreguidelines/missing-std-forward>` check by no longer
  giving false positives for deleted functions, by fixing false negatives when only
  a few parameters are forwarded and by ignoring parameters without a name (unused
  arguments).

- Improved :doc:`cppcoreguidelines-owning-memory
  <clang-tidy/checks/cppcoreguidelines/owning-memory>` check to properly handle
  return type in lambdas and in nested functions.

- Improved :doc:`cppcoreguidelines-prefer-member-initializer
  <clang-tidy/checks/cppcoreguidelines/prefer-member-initializer>` check
  by removing enforcement of rule `C.48
  <https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c48-prefer-in-class-initializers-to-member-initializers-in-constructors-for-constant-initializers>`_,
  which was deprecated since :program:`clang-tidy` 17. This rule is now covered
  by :doc:`cppcoreguidelines-use-default-member-init
  <clang-tidy/checks/cppcoreguidelines/use-default-member-init>`. Fixed
  incorrect hints when using list-initialization.

- Improved :doc:`cppcoreguidelines-special-member-functions
  <clang-tidy/checks/cppcoreguidelines/special-member-functions>` check with a
  new option `AllowImplicitlyDeletedCopyOrMove`, which removes the requirement
  for explicit copy or move special member functions when they are already
  implicitly deleted.

- Improved :doc:`google-build-namespaces
  <clang-tidy/checks/google/build-namespaces>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.

- Improved :doc:`google-explicit-constructor
  <clang-tidy/checks/google/explicit-constructor>` check to better handle
  C++20 `explicit(bool)`.

- Improved :doc:`google-global-names-in-headers
  <clang-tidy/checks/google/global-names-in-headers>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.

- Improved :doc:`google-runtime-int <clang-tidy/checks/google/runtime-int>`
  check performance through optimizations.

- Improved :doc:`hicpp-signed-bitwise <clang-tidy/checks/hicpp/signed-bitwise>`
  check by ignoring false positives involving positive integer literals behind
  implicit casts when `IgnorePositiveIntegerLiterals` is enabled.

- Improved :doc:`hicpp-ignored-remove-result <clang-tidy/checks/hicpp/ignored-remove-result>`
  check by ignoring other functions with same prefixes as the target specific
  functions.

- Improved :doc:`linuxkernel-must-check-errs
  <clang-tidy/checks/linuxkernel/must-check-errs>` check documentation to
  consistently use the check's proper name.

- Improved :doc:`llvm-header-guard
  <clang-tidy/checks/llvm/header-guard>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.

- Improved :doc:`misc-const-correctness
  <clang-tidy/checks/misc/const-correctness>` check by avoiding infinite recursion
  for recursive functions with forwarding reference parameters and reference
  variables which refer to themselves. Also adapted the check to work with
  function-try-blocks.

- Improved :doc:`misc-definitions-in-headers
  <clang-tidy/checks/misc/definitions-in-headers>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.
  Additionally, the option `UseHeaderFileExtensions` is removed, so that the
  check uses the `HeaderFileExtensions` option unconditionally.

- Improved :doc:`misc-header-include-cycle
  <clang-tidy/checks/misc/header-include-cycle>` check by avoiding crash for self
  include cycles.

- Improved :doc:`misc-unused-using-decls
  <clang-tidy/checks/misc/unused-using-decls>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.

- Improved :doc:`misc-use-anonymous-namespace
  <clang-tidy/checks/misc/use-anonymous-namespace>` check by replacing the local
  option `HeaderFileExtensions` by the global option of the same name.

- Improved :doc:`modernize-avoid-c-arrays
  <clang-tidy/checks/modernize/avoid-c-arrays>` check by introducing the new
  `AllowStringArrays` option, enabling the exclusion of array types with deduced
  length initialized from string literals.

- Improved :doc:`modernize-loop-convert
  <clang-tidy/checks/modernize/loop-convert>` check by ensuring that fix-its
  don't remove parentheses used in ``sizeof`` calls when they have array index
  accesses as arguments.

- Improved :doc:`modernize-use-constraints
  <clang-tidy/checks/modernize/use-constraints>` check by fixing a crash that
  occurred in some scenarios and excluding system headers from analysis.

- Improved :doc:`modernize-use-nullptr
  <clang-tidy/checks/modernize/use-nullptr>` check to include support for C23,
  which also has introduced the ``nullptr`` keyword.

- Improved :doc:`modernize-use-override
  <clang-tidy/checks/modernize/use-override>` check to also remove any trailing
  whitespace when deleting the ``virtual`` keyword.

- Improved :doc:`modernize-use-starts-ends-with
  <clang-tidy/checks/modernize/use-starts-ends-with>` check to also handle
  calls to ``compare`` method.

- Improved :doc:`modernize-use-std-print
  <clang-tidy/checks/modernize/use-std-print>` check to not crash if the
  format string parameter of the function to be replaced is not of the
  expected type.

- Improved :doc:`modernize-use-using <clang-tidy/checks/modernize/use-using>`
  check by adding support for detection of typedefs declared on function level.

- Improved :doc:`performance-inefficient-vector-operation
  <clang-tidy/checks/performance/inefficient-vector-operation>` fixing false
  negatives caused by different variable definition type and variable initial
  value type in loop initialization expression.

- Improved :doc:`performance-move-const-arg
  <clang-tidy/checks/performance/move-const-arg>` check by ignoring
  ``std::move()`` calls when their target is used as an rvalue.

- Improved :doc:`performance-unnecessary-copy-initialization
  <clang-tidy/checks/performance/unnecessary-copy-initialization>` check by
  detecting more cases of constant access. In particular, pointers can be
  analyzed, so the check now handles the common patterns
  `const auto e = (*vector_ptr)[i]` and `const auto e = vector_ptr->at(i);`.
  Calls to mutable function where there exists a `const` overload are also
  handled. Fix crash in the case of a non-member operator call.

- Improved :doc:`performance-unnecessary-value-param
  <clang-tidy/checks/performance/unnecessary-value-param>` check
  detecting more cases for template functions including lambdas with ``auto``.
  E.g., ``std::sort(a.begin(), a.end(), [](auto x, auto y) { return a > b; });``
  will be detected for expensive to copy types. Fixed false positives for
  dependent call expressions.

- Improved :doc:`readability-avoid-return-with-void-value
  <clang-tidy/checks/readability/avoid-return-with-void-value>` check by adding
  fix-its.

- Improved :doc:`readability-const-return-type
  <clang-tidy/checks/readability/const-return-type>` check to eliminate false
  positives when returning types with const not at the top level.

- Improved :doc:`readability-container-size-empty
  <clang-tidy/checks/readability/container-size-empty>` check to prevent false
  positives when utilizing ``size`` or ``length`` methods that accept parameter.
  Fixed crash when facing template user defined literals.

- Improved :doc:`readability-duplicate-include
  <clang-tidy/checks/readability/duplicate-include>` check by excluding include
  directives that form the filename using macro.

- Improved :doc:`readability-else-after-return
  <clang-tidy/checks/readability/else-after-return>` check to ignore
  `if consteval` statements, for which the `else` branch must not be removed.

- Improved :doc:`readability-identifier-naming
  <clang-tidy/checks/readability/identifier-naming>` check in `GetConfigPerFile`
  mode by resolving symbolic links to header files. Fixed handling of Hungarian
  Prefix when configured to `LowerCase`. Added support for renaming designated
  initializers. Added support for renaming macro arguments. Fixed renaming
  conflicts arising from out-of-line member function template definitions.

- Improved :doc:`readability-implicit-bool-conversion
  <clang-tidy/checks/readability/implicit-bool-conversion>` check to provide
  valid fix suggestions for ``static_cast`` without a preceding space and
  fixed problem with duplicate parentheses in double implicit casts. Corrected
  the fix suggestions for C23 and later by using C-style casts instead of
  ``static_cast``. Fixed false positives in C++20 spaceship operator by ignoring
  casts in implicit and defaulted functions.

- Improved :doc:`readability-non-const-parameter
  <clang-tidy/checks/readability/non-const-parameter>` check to not crash when
  redeclaration have fewer parameters than expected.

- Improved :doc:`readability-redundant-inline-specifier
  <clang-tidy/checks/readability/redundant-inline-specifier>` check to properly
  emit warnings for static data member with an in-class initializer.

- Improved :doc:`readability-redundant-member-init
  <clang-tidy/checks/readability/redundant-member-init>` check to avoid
  false-positives when type of the member does not match the type of the
  initializer.

- Improved :doc:`readability-static-accessed-through-instance
  <clang-tidy/checks/readability/static-accessed-through-instance>` check to
  support calls to overloaded operators as base expression and provide fixes to
  expressions with side-effects.

- Improved :doc:`readability-simplify-boolean-expr
  <clang-tidy/checks/readability/simplify-boolean-expr>` check to avoid to emit
  warning for macro when IgnoreMacro option is enabled and improve messages
  when auto-fix does not work.

- Improved :doc:`readability-static-definition-in-anonymous-namespace
  <clang-tidy/checks/readability/static-definition-in-anonymous-namespace>`
  check by resolving fix-it overlaps in template code by disregarding implicit
  instances.

- Improved :doc:`readability-string-compare
  <clang-tidy/checks/readability/string-compare>` check to also detect
  usages of ``std::string_view::compare``. Added a `StringLikeClasses` option
  to detect usages of ``compare`` method in custom string-like classes.

Removed checks
^^^^^^^^^^^^^^

- Removed `cert-dcl21-cpp`, which was deprecated since :program:`clang-tidy` 17,
  since the rule DCL21-CPP has been removed from the CERT guidelines.

Miscellaneous
^^^^^^^^^^^^^

- Fixed incorrect formatting in :program:`clang-apply-replacements` when no
  `--format` option is specified. Now :program:`clang-apply-replacements`
  applies formatting only with the option.

Improvements to include-fixer
-----------------------------

The improvements are...

Improvements to clang-include-fixer
-----------------------------------

The improvements are...

Improvements to modularize
--------------------------

The improvements are...

Improvements to pp-trace
------------------------

Clang-tidy Visual Studio plugin
-------------------------------
