ReSharper C++ 2024.2 最新变化

ReSharper C++ 2024.2 实现了新的 C++23 功能,使用类型布局相关信息丰富了工具提示,并为 Rename(重命名)重构带来了多项改进。对于 Unreal Engine 开发者,ReSharper C++ 2024.2 提供了对结构体特征的支持,并添加了新的检查,用于检测对基方法的缺失调用。

下载

提供 30 天免费试用

C++23 支持

ReSharper C++ 2024.2 添加了对多维下标运算符的支持。使用带有多个实参的 operator[] 可以让您更好地支持多维容器和视图。

ReSharper C++ 现在还可以理解 #elifdef#elifndef C++23/C23 预处理程序指令,这些指令补充了现有的 #ifdef#ifndef 指令。

[[assume(<expr>)]] 是 C++23 中的一个新特性,为使用实参表达式向优化器提供额外信息增加了一种可移植的途径。ReSharper C++ 现在可以解析实参,并支持其中所有常见代码智能功能。

Unreal Engine

ReSharper C++ 现在可以识别 Unreal Engine 结构体特征。在结构体特征注解的结构体中,ReSharper C++ 会检查所需方法是否存在,并在缺少方法时生成方法。

新检查可以检测对基方法的缺失调用,特别是 BeginDestroyGetLifetimeReplicatedProps 方法。随附的修正可以插入所需的 Super 调用。

另一个新检查可以标记 IOnlineSubsystem::Get() 的用法并将其替换为 Online::GetSubsystem(this->GetWorld())

如果您对用于 Unreal Engine 开发的独立跨平台 IDE 感兴趣,请选择 Rider。Rider 中的 Unreal Engine 支持与 ReSharper C++ 保持一致,您可以在 Rider 2024.2 更新中期待相同的改进。

类型布局

快速信息工具提示现在包含有关类型布局的信息。将鼠标悬停在某个类或类字段上即可查看其大小和对齐。

将鼠标悬停在类字段上时,您还会看到该字段与对象开头的偏移以及在字段后添加的填充。

重命名改进

重命名文件时,ReSharper C++ 现在提供了一个新选项来重命名同名相关文件。例如,如果重命名一个头文件,则包含该头的 .cpp 文件也将被重命名。

另一个文件重命名选项允许您自动重命名文件内的类型以匹配新文件名。

最后,使用匹配名称重命名文件中的命名空间时,您可以选择自动重命名包含文件。

代码分析

我们已将捆绑的 clang-tidy 二进制文件升级为 Clang 18,引入了最新 LLVM 版本中的新检查和改进。

类似于 2024.1 更新中对 NOLINT 注释的支持,ReSharper C++ 现在可以识别 include-what-you-use pragma 以禁止 Possible unused #include directive(可能的未使用 #include 指令)检查。

我们添加了一个修正,用于在源或目标类型是指向 charstd::byte 的指针的情况下对转换错误使用 reinterpret_cast

其他

检查菜单中的 Why is ReSharper suggesting this?(为什么 ReSharper 这样建议?)选项现在会指向与代码检查相关的 C++ Core Guidelines。

Find Results(查找结果)窗口中现在提供 Base method call(基方法调用)筛选器,可让您从用法列表中筛选掉对基方法的调用。

ReSharper C++ 现在包含异步输入,旨在使 ReSharper 在 Visual Studio 进程外运行,这是提升 ReSharper 性能的持续工作的一部分。我们的内部测试表明,启用异步输入可以改善输入体验流畅度。

ReSharper C++ 还改进了与 Visual Studio 中 CMake 项目的兼容性,修正了几个重要问题并提高了编辑代码时的性能。

查看 ReSharper 最新变化页面,了解此版本中引入的所有其他更改。

下载

提供 30 天免费试用