Extra Clang Tools 20.0.0git (In-Progress) Release Notes¶
Written by the LLVM Team
Warning
These are in-progress notes for the upcoming Extra Clang Tools 20 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 20.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 20.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¶
The
clang-pseudo
tool is incomplete and does not have active maintainers, so it has been removed. See the RFC for more details.
…
Improvements to clangd¶
Inlay hints¶
Added DefaultArguments Inlay Hints option.
Diagnostics¶
Semantic Highlighting¶
Compile flags¶
Hover¶
Code completion¶
Added completion for C++20 keywords.
Code actions¶
Added Swap operands tweak for certain binary operators.
Improved the extract-to-function code action to allow extracting statements with overloaded operators like
<<
ofstd::ostream
.
Signature help¶
Cross-references¶
Objective-C¶
Miscellaneous¶
The DefineOutline tweak now handles member functions of class templates.
Improvements to clang-doc¶
Improvements to clang-query¶
Added set enable-profile true/false command for basic matcher profiling.
Improvements to clang-tidy¶
Improved clang-tidy’s –verify-config flag by adding support for the configuration options of the Clang Static Analyzer Checks.
Improved run-clang-tidy.py script. Fixed minor shutdown noise happening on certain platforms when interrupting the script.
Improved clang-tidy by accepting parameters file in command line.
Removed clang-tidy’s global options for most of checks. All options are changed to local options except IncludeStyle, StrictMode and IgnoreMacros. Global scoped StrictMode and IgnoreMacros are deprecated and will be removed in further releases.
Check |
Options removed from global option |
---|---|
AggressiveDependentMemberLookup |
|
IgnoreSmartPointerDereference |
|
UseAssignment |
|
AllowPartialMove; IgnoreUnnamedParams; IgnoreNonDeducedTemplateTypes |
|
IgnoreHeaders; DeduplicateFindings |
|
EnableProto |
|
AggressiveDependentMemberLookup |
|
Strict |
|
CheckFirstDeclaration |
|
IgnoreTypeAliases |
New checks¶
New bugprone-bitwise-pointer-cast check.
Warns about code that tries to cast between pointers by means of
std::bit_cast
ormemcpy
.New bugprone-nondeterministic-pointer-iteration-order check.
Finds nondeterministic usages of pointers in unordered containers.
New bugprone-tagged-union-member-count check.
Gives warnings for tagged unions, where the number of tags is different from the number of data members inside the union.
New modernize-use-integer-sign-comparison check.
Replace comparisons between signed and unsigned integers with their safe C++20
std::cmp_*
alternative, if available.New portability-template-virtual-member-function check.
Finds cases when an uninstantiated virtual member function in a template class causes cross-compiler incompatibility.
New check aliases¶
New alias cert-arr39-c to bugprone-sizeof-expression was added.
Changes in existing checks¶
Improved altera-id-dependent-backward-branch check by fixing crashes from invalid code.
Improved bugprone-branch-clone check to improve detection of branch clones by now detecting duplicate inner and outer if statements.
Improved bugprone-casting-through-void check to suggest replacing the offending code with
reinterpret_cast
, to more clearly express intent.Improved bugprone-dangling-handle check to treat std::span as a handle class.
Improved bugprone-exception-escape by fixing false positives when a consteval function with throw statements.
Improved bugprone-forwarding-reference-overload check by fixing a crash when determining if an
enable_if[_t]
was found.Improved bugprone-optional-value-conversion to support detecting conversion directly by
std::make_unique
andstd::make_shared
.Improved bugprone-posix-return check to support integer literals as LHS and posix call as RHS of comparison.
Improved bugprone-return-const-ref-from-parameter check to diagnose potential dangling references when returning a
const &
parameter by using the conditional operatorcond ? var1 : var2
and fixing false positives for functions which contain lambda and ignore parameters with[[clang::lifetimebound]]
attribute.Improved bugprone-sizeof-expression check to find suspicious usages of
sizeof()
,alignof()
, andoffsetof()
when adding or subtracting from a pointer directly or when used to scale a numeric value and fix false positive when sizeof expression with template types.Improved bugprone-throw-keyword-missing by fixing a false positive when using non-static member initializers and a constructor.
Improved bugprone-unchecked-optional-access to support bsl::optional and bdlb::NullableValue from <https://github.com/bloomberg/bde>_.
Improved bugprone-unsafe-functions check to allow specifying additional functions to match.
Improved bugprone-use-after-move to avoid triggering on
reset()
calls on moved-fromstd::optional
andstd::any
objects, similarly to smart pointers.Improved cert-flp30-c check to fix false positive that floating point variable is only used in increment expression.
Improved cppcoreguidelines-avoid-const-or-ref-data-members check to avoid false positives when detecting a templated class with inheritance.
Improved cppcoreguidelines-init-variables check by fixing the insertion location for function pointers.
Improved cppcoreguidelines-prefer-member-initializer check to avoid false positive when member initialization depends on a structured binding variable.
Fixed cppcoreguidelines-pro-type-union-access check to report a location even when the member location is not valid.
Improved misc-definitions-in-headers check by rewording the diagnostic note that suggests adding
inline
.Improved misc-redundant-expression check by extending the checker to detect floating point and integer literals in redundant expressions.
Improved misc-unconventional-assign-operator check to avoid false positive for C++23 deducing this.
Improved misc-use-internal-linkage check to insert
static
keyword before type qualifiers such asconst
andvolatile
and fix false positives for function declaration without body and fix false positives for C++20 export declarations and fix false positives for global scoped overloadedoperator new
andoperator delete
.Improved modernize-avoid-c-arrays check to suggest using
std::span
as a replacement for parameters of incomplete C array type in C++20 andstd::array
orstd::vector
before C++20.Improved modernize-loop-convert check to fix false positive when using loop variable in initializer of lambda capture.
Improved modernize-min-max-use-initializer-list check by fixing a false positive when only an implicit conversion happened inside an initializer list.
Improved modernize-use-designated-initializers check to fix a crash when a class is declared but not defined.
Improved modernize-use-nullptr check to also recognize
NULL
/__null
(but not0
) when used with a templated type.Improved modernize-use-starts-ends-with check to handle two new cases from
rfind
andcompare
toends_with
, and one new case fromsubstr
tostarts_with
, and a small adjustment to the diagnostic message.Improved modernize-use-std-format check to support replacing member function calls too and to only expand macros starting with
PRI
and__PRI
from<inttypes.h>
in the format string.Improved modernize-use-std-print check to support replacing member function calls too and to only expand macros starting with
PRI
and__PRI
from<inttypes.h>
in the format string.Improved modernize-use-using check by not expanding macros.
Improved performance-avoid-endl check to use
std::endl
as placeholder when lexer cannot get source text.Improved performance-move-const-arg check to fix a crash when an argument type is declared but not defined.
Improved readability-container-contains check to let it work on any class that has a
contains
method. Fix some false negatives in thefind()
case.Improved readability-enum-initial-value check by only issuing diagnostics for the definition of an
enum
, by not emitting a redundant file path for anonymous enums in the diagnostic, and by fixing a typo in the diagnostic.Improved readability-implicit-bool-conversion check by adding the option UseUpperCaseLiteralSuffix to select the case of the literal suffix in fixes and fixing false positive for implicit conversion of comparison result in C23.
Improved readability-redundant-smartptr-get check to remove ->, when redundant get() is removed.
Improved readability-identifier-naming check to validate
namespace
aliases.
Removed checks¶
Miscellaneous¶
The bugprone-narrowing-conversions check is no longer an alias of cppcoreguidelines-narrowing-conversions. Instead, cppcoreguidelines-narrowing-conversions is now an alias of bugprone-narrowing-conversions.
Improvements to include-fixer¶
The improvements are…
Improvements to clang-include-fixer¶
The improvements are…
Improvements to modularize¶
The improvements are…