ReSharper 2024.1 最新变化

在 ReSharper 2024.1 中,我们进一步改进了 C# 支持,增加了将代码转换为集合表达式的更多建议,在 foreach 循环内迭代期间修改集合时也会收到警告。 Razor 支持现在可为 @addTagHelper@removeTagHelper 指令解析引用,并且用于编辑自定义命名规则的 UX/UI 已得到极大改进。

下载

可免费试用 30 天

C# 支持

到集合表达式的更多转换

到集合表达式的更多转换

现在,您将获得建议,将源代码中的更多代码结构转换为 C# 12 中的集合表达式,例如空数组或 ImmutableArray 声明和初始化。

Collection was modified(集合已被修改)分析

Collection was modified(集合已被修改)分析

我们添加了新的 Possible 'System.InvalidOperationException: Collection was modified'(可能的 'System.InvalidOperationException: 集合已被修改')检查,在 foreach 循环内迭代期间修改集合时,它会发出警告,因为此修改可能会导致运行时异常。 此分析了解集合修改后退出循环的情况,这些情况不会触发警告。

检查附带对应快速修复,可以帮助您立即解决此问题。

Generate | Formatting Members(生成 | 设置成员格式)更新

Generate | Formatting Members(生成 | 设置成员格式)更新

Generate | Formatting Members(生成 | 设置成员格式)可供生成样板代码来重写 ToString() 方法并为类型返回有意义的字符串。 从 2024.1 版本开始,此功能支持更多类型,例如 ISpanFormattableIUtf8SpanFormattableIFormattable

对异步方法中可处置资源的增强支持

对异步方法中可处置资源的增强支持

  • [MustDisposeResource] 注解改进:C# 代码分析现在可以确保正确处置异步方法返回的资源(包括 Task<IDisposable>ValueTask<IDisposable> 中包装的资源),帮助您避免意外处置任务本身。
  • 类任务返回值:2024.1 版本中对类任务返回值的正确分析可以确保检查等待的资源是否已处置,并且包含通过 .ConfigureAwait(...).AsTask().Result 检索的资源。
Change Signature(更改签名)重构的更新

Change Signature(更改签名)重构的更新

以下是我们对 Change Signature(更改签名)重构所做的一些改进:

  • 重构现在支持 Deconstruct 方法。 您可以添加、移除、重新排列和重命名形参,这些更改将反映在方法声明及其用法中。
  • 代码补全现在可用于类型形参。 这意味着,例如,需要为 List<> 指定类型时,您可以使用代码补全轻松选择所需类型,例如 int
  • 添加或更新形参时,类型命名空间会被自动缩短。 这有助于在应用重构后保持代码整洁和简单。 例如,如果在 Change Signature(更改签名)对话框中指定 System.Collections.Generic.List<System.Int16> 类型,在生成的代码中它将被自动缩短为 List<short>
  • 重构现在支持最新版本 C# 的更多功能,例如 inref readonly 修饰符以及 record 类型。
Make Static(设为 static)重构的更新

Make Static(设为 static)重构的更新

在此版本中,Make Static(设为 static)重构支持主构造函数形参。 它们位于 Introduce parameters(引入形参)列表中,并具有单独的图标帮助您轻松区分。 此重构也适用于局部函数。

protobuf-net 库的支持

代码分析现在提供对 protobuf-net 库中 ProtoContract 特性和 ImplicitFields 枚举的支持。 这两项都可以用来标记隐式用于序列化的成员。 因此,此类成员不再使用 unused members(未使用的成员)警告进行标记。

Razor 支持

为 @addTagHelper 和 @removeTagHelper 指令解析引用

@addTagHelper@removeTagHelper 指令解析引用

ReSharper 现在可以为 Razor 视图中 @addTagHelper@removeTagHelper 指令内指定的程序集名称解析引用。 因此,您现在可以受益于代码补全、查找用法以及便利的代码导航。

ReSharper 现在会将任何未解析的程序集名称视为错误,并以红色高亮显示以引起您的注意。

支持 C++

支持 C++

C++ 支持的显著增强包括:

  • C++20 模块重做的实现提升了性能并提供了对内部模块分区的支持。
  • Change Signature(更改签名)提供了新功能,包括在指针、引用或值类型之间更改形参类型。
  • Call Tracking(调用跟踪)现在支持传出调用链。
  • 您现在可以轻松自定义生成的文档注释的样式。 此外,文档注释中还提供语法检查。
  • Unreal Engine 的 Slate UI 框架现已获得支持。

详细了解 C++ 更新:ReSharper C++ 2024.1 最新变化

性能

解决方案级分析中的高资源利用率模式

解决方案级分析中的高资源利用率模式

我们正在为解决方案级分析积极完善高资源利用率模式,通过更有效地利用 CPU 并行性显著缩短分析时长。 我们改进了代码分析活动的内存分配分析,最大程度地减少垃圾回收所花费的时间。 优化过程仍在推进,我们欢迎您启用此模式并提供体验反馈。

更快的 Rename(重命名)重构

现在,代码中的元素重命名更快、更高效。 此更改还会影响 ReSharper 的其他核心组件,提升多个功能的性能,包括 Find Usages(查找用法)。

更快的 Move to Another Type(移至另一个类型)重构

对于大型类,静态成员的 Move to Another Type(移动到其他类型)重构的性能得到了显著提高。

代码格式设置

自定义命名规则的改进 UX/UI

更改应当可以让用户更轻松地使用高级命名规则和观察从 EditorConfig 文件导入的规则。

Remove whitespace on blank lines(移除空行中的空格)设置

Remove whitespace on blank lines(移除空行中的空格)设置

这项新的格式设置允许您保留或移除空行中的空格。

反编译器

新的专属 Assembly Diff(程序集差异)工具窗口

新的专属 Assembly Diff(程序集差异)工具窗口

2024.1 更新为 ReSharper 引入了新的 Assembly Diff(程序集差异)工具窗口。 更改包括:

  • 比较程序集、NuGet 软件包、文件夹和 .zip 归档的功能已从 Assembly Explorer(程序集资源管理器)移至 Assembly Diff(程序集差异)工具窗口。
  • Diff mode(差异模式)选择器以及 Compare(比较)和 Diff Options(差异选项)按钮已重新定位到 Assembly Diff(程序集差异)工具窗口的 Actions(操作)栏。
对 WebCIL 打包格式的支持

对 WebCIL 打包格式的支持

ReSharper 内的反编译器现已支持 WebAssemblies 的 WebCIL 打包格式。 支持涵盖:

  • WebCIL 的反编译。
  • Assembly Explorer 中查看 .wasm 文件的功能。
  • Assembly Explorer 中 WASM 节点的元数据子树,包括 WASM 和 WebCIL 头。

dotTrace、dotMemory 和 dotCover 中的 MAUI 支持 dotUltimate

Visual Studio 内的 dotTrace、dotMemory 和 dotCover 现在也提供对桌面 MAUI 和 .NET macOS 应用程序的支持。

支持的目标框架:

  • MAUI Windows(dotTrace、dotMemory、dotCover 中):net8.0-windowsnet7.0-windows
  • MAUI Mac(仅 dotTrace 中):net8.0-maccatalystnet7.0-maccatalyst
  • macOS 应用程序(dotTrace 和 dotMemory 中):net8.0-macosnet7.0-macos

点击此处详细了解分析模式的可用性和限制。

这些 .NET 工具的独立版本中也提供对 MAUI 项目的支持。

对冻结对象堆的支持 dotUltimate

独立 dotMemory 分析工具现已提供对冻结对象堆的支持 – 冻结对象堆最初随 .NET 6 SDK 引入,作为垃圾回收性能改进的一部分。

FOH 会为不可变对象分配专用内存区域。 这些对象在分配后不会更改,也不会进行垃圾回收。 对此技术的支持使 dotMemory 能够对 FOH 中不可变对象使用的内存进行更详细的分析,促进内存使用的优化。

命令行工具

SARIF 格式成为默认选项

SARIF 格式成为默认选项

从 2024.1 版本开始,InspectCode 的默认输出格式为 SARIF。 XML 格式将很快被弃用。 在当前版本中,使用 -f="xml" 形参时,结果仍然以 XML 格式提供。

其他

进程外重构

我们已经完成了文本控件的内部重构。 除了使 ReSharper 在进程之外运行,此重构还旨在改进 ReSharper 和 Rider 的输入和编辑器性能相关方面。 您可以在此处找到我们将 ReSharper 带出进程的最新进展。

扩展程序管理器

JetBrains Marketplace 插件源采用基于兼容性检查的新筛选机制。 这意味着不兼容的插件不再显示在 ReSharper 的扩展程序管理器中。

下载

可免费试用 30 天