Extra Clang Tools 19.0.0git (In-Progress) Release Notes¶
Written by the LLVM Team
Warning
These are in-progress notes for the upcoming Extra Clang Tools 19 release. Release notes for previous releases can be found on the Download Page.
Introduction¶
This document contains the release notes for the Extra Clang Tools, part of the Clang release 19.0.0git. 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.
For more information about Clang or LLVM, including information about the latest release, please see the Clang Web Site or the LLVM Web Site.
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.
What’s New in Extra Clang Tools 19.0.0git?¶
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¶
Inlay hints¶
Diagnostics¶
Semantic Highlighting¶
Compile flags¶
Hover¶
Code completion¶
Code actions¶
Signature help¶
Cross-references¶
Objective-C¶
Miscellaneous¶
Improvements to clang-doc¶
Improvements to clang-query¶
The improvements are…
Improvements to clang-rename¶
The improvements are…
Improvements to clang-tidy¶
Improved 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.
Improved check_clang_tidy.py script. Added argument -export-fixes to aid in clang-tidy and test development.
New checks¶
New 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 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 modernize-use-designated-initializers check.
Finds initializer lists for aggregate types that could be written as designated initializers instead.
New readability-enum-initial-value check.
Enforces consistent style for enumerators’ initialization, covering three styles: none, first only, or all initialized explicitly.
New readability-use-std-min-max check.
Replaces certain conditional statements with equivalent calls to
std::min
orstd::max
.
New check aliases¶
Changes in existing checks¶
Improved bugprone-assert-side-effect check by detecting side effect from calling a method with non-const reference parameters.
Improved bugprone-forwarding-reference-overload check to ignore deleted constructors which won’t hide other overloads.
Improved bugprone-inc-dec-in-conditions check to ignore code within unevaluated contexts, such as
decltype
.Improved bugprone-lambda-function-name check by ignoring
__func__
macro in lambda captures, initializers of default parameters and nested function declarations.Improved bugprone-non-zero-enum-to-bool-conversion check by eliminating false positives resulting from direct usage of bitwise operators within parentheses.
Improved bugprone-suspicious-include check by replacing the local options HeaderFileExtensions and ImplementationFileExtensions by the global options of the same name.
Improved bugprone-too-small-loop-variable check by incorporating better support for
const
loop boundaries.Improved bugprone-unused-local-non-trivial-variable check by ignoring local variable with
[maybe_unused]
attribute.Improved 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
andstd::unique
, avoiding false positive for assignment operator overloading.Improved bugprone-use-after-move check to also handle calls to
std::forward
.Improved 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 cppcoreguidelines-owning-memory check to properly handle return type in lambdas and in nested functions.
Improved cppcoreguidelines-prefer-member-initializer check by removing enforcement of rule C.48, which was deprecated since clang-tidy 17. This rule is now covered by cppcoreguidelines-use-default-member-init. Fixed incorrect hints when using list-initialization.
Improved google-build-namespaces check by replacing the local option HeaderFileExtensions by the global option of the same name.
Improved google-explicit-constructor check to better handle
C++-20
explicit(bool).Improved google-global-names-in-headers check by replacing the local option HeaderFileExtensions by the global option of the same name.
Improved google-runtime-int check performance through optimizations.
Improved hicpp-ignored-remove-result check by ignoring other functions with same prefixes as the target specific functions.
Improved llvm-header-guard check by replacing the local option HeaderFileExtensions by the global option of the same name.
Improved misc-const-correctness check by avoiding infinite recursion for recursive forwarding reference.
Improved 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 misc-unused-using-decls check by replacing the local option HeaderFileExtensions by the global option of the same name.
Improved misc-use-anonymous-namespace check by replacing the local option HeaderFileExtensions by the global option of the same name.
Improved 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 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 modernize-use-override check to also remove any trailing whitespace when deleting the
virtual
keyword.Improved modernize-use-using check by adding support for detection of typedefs declared on function level.
Improved performance-unnecessary-copy-initialization check by detecting more cases of constant access. In particular, pointers can be analyzed, se the check now handles the common patterns const auto e = (*vector_ptr)[i] and const auto e = vector_ptr->at(i);.
Improved readability-avoid-return-with-void-value check by adding fix-its.
Improved readability-duplicate-include check by excluding include directives that form the filename using macro.
Improved 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.
Improved 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.Improved readability-redundant-inline-specifier check to properly emit warnings for static data member with an in-class initializer.
Improved readability-static-definition-in-anonymous-namespace check by resolving fix-it overlaps in template code by disregarding implicit instances.
Removed checks¶
Removed cert-dcl21-cpp, which was deprecated since clang-tidy 17, since the rule DCL21-CPP has been removed from the CERT guidelines.
Miscellaneous¶
Fixed incorrect formatting in clang-apply-replacements when no
--format
option is specified. Now clang-apply-replacements applies formatting only with the option.Fixed the linuxkernel-must-check-errs documentation to consistently use the check’s proper name.
Improvements to include-fixer¶
The improvements are…
Improvements to clang-include-fixer¶
The improvements are…
Improvements to modularize¶
The improvements are…