Extra Clang 工具 20.0.0git(进行中)发布说明¶
由 LLVM 团队 编写
警告
这些是即将发布的 Extra Clang 工具 20 的进行中说明。以前版本的发布说明可以在 下载页面 上找到。
介绍¶
本文档包含 Extra Clang 工具的发布说明,它是 Clang 20.0.0git 版本的一部分。在这里,我们将详细描述 Extra Clang 工具的状态,包括自上次发布以来的重大改进和新功能。所有 LLVM 版本都可以从 LLVM 版本网站 下载。
有关 Clang 或 LLVM 的更多信息,包括有关最新版本的详细信息,请参阅 Clang 网站 或 LLVM 网站。
请注意,如果您从 Git 检出或主 Clang 网页中阅读此文件,本文档适用于下一个版本,而不是当前版本。要查看特定版本的发布说明,请参阅 发布页面。
Extra Clang 工具 20.0.0git 中的新增内容?¶
这里列出了一些 Extra Clang 工具的主要新功能和改进。首先介绍对 Extra Clang 工具整体或其底层基础设施的一般改进,然后是特定于工具的章节。
主要新功能¶
该
clang-pseudo
工具不完整且没有活跃的维护者,因此已将其移除。有关详细信息,请参阅 RFC。
…
对 clangd 的改进¶
内嵌提示¶
添加了 DefaultArguments 内嵌提示选项。
诊断¶
语义高亮¶
编译标志¶
悬停¶
代码补全¶
代码操作¶
为某些二元运算符添加了 交换操作数 调整。
签名帮助¶
交叉引用¶
Objective-C¶
其他¶
DefineOutline 调整现在处理类模板的成员函数。
对 clang-doc 的改进¶
对 clang-query 的改进¶
改进包括…
对 clang-tidy 的改进¶
通过添加对 Clang 静态分析器检查 的配置选项的支持,改进了 clang-tidy 的 –verify-config 标志。
改进了 run-clang-tidy.py 脚本。修复了在某些平台上中断脚本时发生的轻微关闭噪音。
新增检查¶
新增 bugprone-bitwise-pointer-cast 检查。
警告尝试通过
std::bit_cast
或memcpy
在指针之间进行转换的代码。新增 bugprone-nondeterministic-pointer-iteration-order 检查。
查找无序容器中指针的非确定性用法。
新增 bugprone-tagged-union-member-count 检查。
针对标记联合体发出警告,其中标记的数量与联合体内部的数据成员的数量不同。
新增 portability-template-virtual-member-function 检查。
查找模板类中未实例化的虚成员函数导致跨编译器不兼容的情况。
新增检查别名¶
现有检查中的更改¶
通过修复来自无效代码的崩溃,改进了 altera-id-dependent-backward-branch 检查。
改进了 bugprone-casting-through-void 检查,以建议用
reinterpret_cast
替换有问题的代码,以更清楚地表达意图。改进了 bugprone-dangling-handle 检查,将 std::span 视为一个句柄类。
改进了 bugprone-forwarding-reference-overload 检查,通过修复在确定是否找到
enable_if[_t]
时发生的崩溃。改进了 bugprone-posix-return 检查,以支持将整数文字作为比较的 LHS 和 posix 调用作为 RHS。
改进了 bugprone-return-const-ref-from-parameter 检查,通过使用条件运算符
cond ? var1 : var2
来诊断在返回const &
参数时可能出现的悬空引用。改进了 bugprone-sizeof-expression 检查,以查找在直接从指针添加或减去或用于缩放数值时,使用
sizeof()
、alignof()
和offsetof()
的可疑用法。改进了 bugprone-unchecked-optional-access,以支持来自 <https://github.com/bloomberg/bde>_ 的 bsl::optional 和 bdlb::NullableValue。
改进了 bugprone-unsafe-functions 检查,以允许指定要匹配的其他函数。
改进了 cert-flp30-c 检查,以修复浮点变量仅在增量表达式中使用的假阳性。
改进了 cppcoreguidelines-prefer-member-initializer 检查,以避免在成员初始化依赖于结构化绑定变量时出现假阳性。
修复了 cppcoreguidelines-pro-type-union-access 检查,以便即使成员位置无效也能报告位置。
改进了 misc-definitions-in-headers 检查,通过重新措辞建议添加
inline
的诊断说明。改进了 misc-unconventional-assign-operator 检查,以避免在 C++23 推断此类型时出现假阳性。
改进了 modernize-avoid-c-arrays 检查,以建议使用
std::span
作为 C++20 中不完整 C 数组类型参数的替代,以及在 C++20 之前使用std::array
或std::vector
。改进了 modernize-loop-convert 检查,以修复在 lambda 捕获的初始化器中使用循环变量时出现的假阳性。
改进了 misc-use-internal-linkage 检查,以便在类型限定符(如
const
和volatile
)之前插入static
关键字。改进了 modernize-min-max-use-initializer-list 检查,通过修复在初始化列表内仅发生隐式转换时出现的假阳性。
改进 modernize-use-designated-initializers 检查,修复在类被声明但未定义时发生的崩溃。
改进 modernize-use-nullptr 检查,使其也能识别使用模板类型时的
NULL
/__null
(但不包括0
)。改进 modernize-use-starts-ends-with 检查,使其能够处理可以用
ends_with
替换的两种情况。改进 modernize-use-std-format 检查,使其支持替换成员函数调用,并且仅扩展格式字符串中以
PRI
和__PRI
开头的宏(来自<inttypes.h>
)。改进 modernize-use-std-print 检查,使其支持替换成员函数调用,并且仅扩展格式字符串中以
PRI
和__PRI
开头的宏(来自<inttypes.h>
)。改进 performance-avoid-endl 检查,使其在词法分析器无法获取源代码文本时使用
std::endl
作为占位符。改进 performance-move-const-arg 检查,修复在参数类型被声明但未定义时发生的崩溃。
改进 readability-container-contains 检查,使其能够在任何具有
contains
方法的类上工作。修复了find()
情况下的某些误报。改进 readability-enum-initial-value 检查,使其只针对
enum
的定义发出诊断信息,不再为匿名枚举在诊断信息中发出多余的文件路径,并修复了诊断信息中的一个拼写错误。改进 readability-implicit-bool-conversion 检查,通过添加选项 UseUpperCaseLiteralSuffix 来选择修复中字面量后缀的大小写,并修复了在 C23 中对比较结果的隐式转换的误报。
改进 readability-redundant-smartptr-get 检查,使其在删除多余的 get() 时删除 ->。
改进 readability-identifier-naming 检查,使其能够验证
namespace
别名。
已删除的检查¶
其他改进¶
对 include-fixer 的改进¶
改进包括…
对 clang-include-fixer 的改进¶
改进包括…
对 modularize 的改进¶
改进包括…