ReSharper C++ 2024.1 最新变化

ReSharper C++ 2024.1 改进了 C++20 模块支持并在 Call Tracking(调用跟踪)中实现了传出调用。 编码辅助增强包括 Change Signature(更改签名)重构改进、更新的文档注释支持等。 对于 Unreal Engine 开发者,ReSharper C++ 2024.1 带来了对 Slate UI 框架和 C++ 代码中资源路径补全的支持。

下载

可免费试用 30 天

C++20 模块支持

得益于更新的模块发现过程,ReSharper C++ 现在支持内部分区单元,这些模块分区单元不参与模块的外部接口。 也就是说,它们是没有关联的 export module 声明的模块分区。

我们重做了导出的 C++20 模块的内部表示,旨在简化对从其他模块导入的实体的传递引用。 此前,这些实体会从导入它们的模块中重新导出。 我们预计,这一更改将显著减少导出的模块的占用空间并提高使用 C++20 模块的项目的性能。

Unreal Engine

ReSharper C++ 2024.1 引入了对 Unreal Engine 的 Slate UI 框架的支持。 您可以依靠 ReSharper 的代码格式化程序和输入辅助根据 Unreal Engine 的约定设置 Slate 代码格式。 Go to declaration(转到声明)、Find Usages(查找用法)和 Rename(重命名)等功能也已更新,可以理解 Slate 的声明式语法。

ReSharper C++ 与蓝图功能的集成进一步发展,支持在重命名 UENUM 实例时添加核心重定向,C++ 代码中的资源名称获得资产路径补全。

着色器代码现已支持用于动态着色器链接的 HLSL 接口。

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

Call Tracking(调用跟踪)中的传出调用

除了对跟踪传入调用的现有支持外,ReSharper 的 Call Tracking(调用跟踪)现在还支持传出 C++ 调用链导航。 要探索传出调用,首先将文本光标置于任意函数处,然后从上下文菜单选择 Inspect | Outgoing calls(检查 | 传出调用)。 或者,您也可以按 Ctrl+Shift+Alt+AInspect This(检查此)菜单调用。

Change Signature(更改签名)改进

通过 Change Signature(更改签名),您可以在指针、引用或值类型之间轻松更改函数形参的类型。 ReSharper 将自动更新函数体内的形参用法,并在函数调用点调整函数实参,根据需要添加解引用或 address-of 运算符。

如果在依赖代码中具有潜在用法的函数上调用 Change Signature(更改签名),该重构现在让您可以验证更改并确认需要更新哪些用法。

您现在还可以为使用 Change Signature(更改签名)添加的新函数形参指定默认实参。

Change Signature(更改签名)的其他显著更新:

  • 可变参函数模板的改进处理。
  • 为宏调用内的调用点正确更新函数实参。
  • Change Signature(更改签名)现在会保留数组类型和 unsigned int 类型中的 int 类型说明符。

文档注释

您现在可以自定义生成的文档注释的样式,无需编辑实时模板。 要配置文档注释的样式,请转到 ReSharper 的 Settings | Code editing | C++ | Code generation(设置 | 代码编辑 | C++ | 代码生成)。

JetBrains Grazie 是 ReSharper 的新内置语法和拼写检查器,在 ReSharper 2023.3 中引入。 在 2024.1 版本中,C++ 文档注释也可以使用 Grazie 驱动的语法检查。

Change Signature(更改签名)重构现在会使 @param 命令与函数形参列表保持同步。 此重构为已移除形参删除了 @param 命令,为新形参添加了命令,并重新排列了现有命令来匹配所包含形参的新顺序。

代码分析

根据 Richard Thomson 维护的 C++ 重构工具综合测试套件的最新结果,ReSharper C++ 通过了最多的测试用例,继续优于其他工具。 同时,我们持续提高 ReSharper 建议的质量,在 ReSharper C++ 2024.1 中解决了 Richard 的测试套件发现的几个问题。 例如,Create constructor from usage(从用法创建构造函数)快速修复现在会根据需要添加默认构造函数。

ReSharper C++ 2024.1 现在会建议移除聚合初始化中的冗余惯用零初始值设定项。 一些新检查会发现 static 数据成员的各种问题,例如 static constexpr 数据成员上的冗余 inline 说明符。

代码清理添加了新条目,可以移除冗余可访问性说明符并将没有继承者的类设为 final。 除了局部变量之外,Apply 'auto' style(应用 'auto' 样式)现在还可以处理全局变量和类成员。

如果您想禁止特定作用域内的检查,此前可以使用 ReSharper 特定的 // ReSharper disable 注释。 ReSharper C++ 2024.1 还可以识别 clang-tidy 使用的 NOLINTNOLINTNEXTLINENOLINTBEGIN ... NOLINTEND 注释。

代码格式设置

ReSharper C++ 2024.1 引入了多个新的格式设置选项:

  • Break line after goto labels(在 goto 标签后换行)和 Indent goto labels(缩进 goto 标签)增强了带标签的语句的格式设置。
  • Arrangement of enumerations(枚举排列)下控制枚举内换行的设置。
  • Empty braces formatting(空大括号格式设置)现在包含 Do not change(不更改)选项。

使用 .clang-format 配置时,ReSharper 的格式化程序现在会考虑 DisableFormatIndentAccessModifiers 设置。 GNU 内置 clang-format 样式也已得到支持。

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

下载

可免费试用 30 天