ReSharper 2025.1最新变化

ReSharper 2025.1 提供了对 .NET 10 和 C# 14 预览功能的初步支持。 此版本还带来了针对常见 C# 缺陷的新检查,以及多项体验增强。 得益于全面改进的字符串驻留系统以及对 Razor 标记帮助程序和 Blazor 组件的重建支持,性能得到显著提升。 此外,此版本还推出了 Visual Studio 中的 dotMemory 集成,并引入了新的 Qodana Team Code Quality 插件,实现增强的 CI/CD 管道集成。

C# 支持

.NET 10 Preview 和 C# 14 支持

ReSharper 2025.1 提供了对 .NET 10 和 C# 14 预览功能的初步支持。

未绑定泛型类型的 nameof

以前,使用 nameof 需要指定所有类型实参,导致不必要的冗长。 C# 14 允许 nameof(List<>) 而不显式列出类型实参。 ReSharper 现在可以检测 nameof 表达式中的冗余泛型类型实参,并提供了快速修复来简化它们。

一类 Span<T> 转换

C# 14 在 ReadOnlySpan<T>Span<T>T[] 之间引入了新隐式转换,使基于 span 的代码更加直观。 ReSharper 现在完全支持这些转换规则,帮助您编写高效、现代的 C# 代码。

简单 lambda 形参的修饰符

在 C# 14 中,您现在可以在 lambda 表达式中使用 refoutinscoped 等形参修饰符,而无需显式形参类型。 ReSharper 提供了快速修复来移除冗余的类型规范。

我们的博客中了解 ReSharper 和 Rider 中的 C# 语言支持改进。

除了引入对 C# 14 功能的支持外,此版本还引入了针对不同 C# 版本中常见问题和低效代码的多项新检查。

将内插转换为串联的新上下文操作

您可以借助一项新上下文操作将字符串内插转换回串联。 ReSharper 长期支持将字符串串联 "Id = " + someId 转换为内插 $"Id = {someId}"string.Format("Id = {0}", someId),但此更新通过允许反向转换完成了整个循环,让您在构建字符串表达式时拥有更大的灵活性。

冗余重复代码

ReSharper 现在可以检测并高亮显示 ifswitch 等条件构造中出现的更多代码重复模式,并为更清洁、更易维护的代码提出重构建议。

可能错误使用了 CancellationToken

ReSharper 现在可以检测错误使用方法级 CancellationToken 而不是本地令牌的情况。 它提供了快速修复来替换不正确的令牌或使用 CancellationTokenSource.CreateLinkedTokenSource() 合并多个令牌。

使用 nameof 引用枚举成员名称

在枚举成员上调用 .ToString() 可能产生不必要的运行时开销。 ReSharper 现在建议使用 nameof(SomeEnum.Member) 替换,以提高性能和清晰度。

元组组件名称建议

ReSharper 2025.1 建议使用显式元组组件名称而不是泛型 ItemN 名称,使您的代码更易阅读和自归档。

Inexact stream reads(流读取不精确)检查

现在,如果使用 Stream.Read()ReadAsync() 方法时未检查其返回值(可能导致数据读取不完整),ReSharper 会发出警告。 它将建议使用 .ReadExactly() 替换,以确保正确性。

Debug.Assert 检查中的修改警告

由于 Debug.Assert 调用在 RELEASE 构建中被移除,ReSharper 会对修改状态并可能导致生产代码中出现意外行为的断言发出警告。

处理数据库

ReSharper 2025.1.3 中的 SQL 和 NoSQL 支持 dotUltimate

ReSharper 2025.1.3 引入了对查询语言的支持,以提升您在 Visual Studio 中的 SQL 和 NoSQL 编码体验。 利用智能代码分析、补全和快速修复处理所有主要方言的查询。 点击下方链接详细了解最新支持的功能及其涵盖许可。

了解详情

C++ 支持

ReSharper 2025.1 为 C++ 支持带来了多项改进:

  • 引入了 Inline Macro(内联宏)重构。
  • 支持多个新的 GNU 语言扩展。
  • 包含大量蓝图资源的 Unreal Engine 项目的内存使用优化。
  • 捆绑了 Clang-Tidy 20,并支持在 ARM 设备上使用 Clang-Tidy。
  • 更新了 GoogleTest 支持。

ReSharper C++ 2025.1 最新变化页面详细了解 C++ 更新。

代码重构

切换 <ImplicitUsings> 重构

隐式 using 自动包含通用命名空间,有助于减少样板。 现在,ReSharper 提供了一种在整个项目中切换隐式 using 的简便方式,启用时移除冗余显式 using,禁用时添加必要 using。

重做的 Transform Parameters(转换形参)重构

ReSharper 对 Transform Parameters(转换形参)重构进行了现代化改造,增加了对值元组、记录和异步场景的支持,有助于提高代码灵活性和可维护性。

代码格式设置

Chop formatting(截断格式设置)上下文操作

新的格式设置操作会将截断格式设置应用于各种 C# 构造,提高代码的可读性和一致性。

其他改进

  • 现在,注释格式设置可以确保正确换行并在 // 后添加空格。 您可以在这些工单中找到实用的屏幕截图:[RSRP-225809][RSRP-78312]
  • 我们还添加了一个选项,不在方法调用中的单个 lambda 表达式实参前插入换行符。 [RSRP-467905]

用户体验

一键提示激活和指示器改进

我们改进了 ReSharper 中的一键提示行为,防止因与其他基于 Ctrl 的快捷键冲突而导致的意外激活。 此外,我们还引入了视觉指示器来显示该模式何时处于有效状态。

扩展类型列表的上下文高亮显示工具

将文本光标置于基类型子句中的类型名称上时,ReSharper 现在会直观高亮显示扩展基类或实现特定接口的成员。

性能

内存消耗

在此版本中,我们彻底改进了字符串驻留系统。 IDE 处理大量字符串,包括源代码、语法元素、符号名称和文件路径,这使高效的字符串处理至关重要。 我们的新字符串驻留系统平均存储的唯一字符串数量是其先前版本的四倍,而消耗的内存只有先前的一半,有助于释放大型 .NET 项目中的资源。

Blazor 和 Razor 改进

Razor 标记帮助程序和 Blazor 组件支持已在 2025.1 中完全重建。 这项期待已久的重做将使用大量组件的大型 ASP.NET 解决方案的分析时间减少了 5%–10%。 编辑 .cshtml/.razor 文件时,您还会遇到更少的重新分析事件,错误报告也显著减少。

进程外 ReSharper 的最新状态更新

过去四周,我们一直在内部测试 ReSharper 的最新进程外 (OOP) 实现,目前的结果非常喜人。 我们仍在努力支持所有功能并修正已知问题,同时,使 ReSharper 成为开发工作流重要组成部分的核心功能正在顺利完善。

阅读我们的最新博文,了解 OOP ReSharper 的完整状态更新。

内存分析 dotUltimate

在 Visual Studio 中使用 dotMemory 进行快照分析

dotMemory 现在已完全集成到 Microsoft Visual Studio 中。 以前,您在 Visual Studio 中只能触发性能分析,必须切换到独立的 dotMemory 应用程序才能分析结果。 现在,您可以在 IDE 中完成应用程序的性能分析和内存快照分析。

代码质量

Qodana Team Code Quality 扩展程序

Qodana 团队代码质量工具利用 JetBrains 检查帮助团队运行检查与审核,并在他们的首选 CI/CD 管道中建立质量门。 现在,您可以通过 ReSharper 安装程序下载 Qodana Team Code Quality 扩展程序,将 Qodana Cloud 或自托管 Qodana 项目引入 Visual Studio。

识别代码问题、bug 和漏洞,直接在管道中运行分析,然后在您工作的 IDE 中查看问题,更好地进行上下文更新和学习。 您还可以选择使用 ReSharper 安装程序将其下载为独立工具。

游戏开发

适用于 ReSharper 的 Unity 插件

ReSharper 2025.1 附带了一个捆绑的 Unity 插件,支持所有主要的游戏开发工作流。 该插件提供了针对 Unity 事件函数和 API 的代码补全、带有 Unity 文档链接的工具提示摘要,以及检测常见问题的专用检查。 它包括对 ShaderLab 文件的支持,提供语法高亮、代码补全和错误检测。 该插件还会自动处理 .meta 文件,并检测 Unity 场景、预制件和资源中字段和方法的隐式使用。

ReSharper C++ 继续为 Unreal Engine 开发提供专门支持。

反编译器

ReSharper 2025.1 为反编译器带来了多项改进,增强了对最新 C# 功能的支持并提高了代码可读性。 最新变化如下:

  • required 成员的支持。
  • 新增了对 C# 13 中引入的新 System.Threading.Lock 类型的支持。
  • ref 字段和 scoped 形参修饰符的支持。
  • allows ref struct 泛型反约束的支持。
  • ref struct 类型的基于模式的 using
  • 对字符串内插的支持。
  • 反编译代码中的某些整数常量现在包含注释的十六进制表示法,可以提高可读性。
  • 对文件作用域的命名空间的支持。

其他显著改进

新的后缀模板:.inject

C# 12 的主构造函数简化了依赖项注入。 新的 .inject 后缀模板通过在主构造函数中自动引入形参并建议有意义的名称,进一步简化了构造函数依赖项注入。

结构化日志记录支持

ReSharper 现在提供增强的结构化日志记录支持,帮助开发者更高效地编写和分析日志。

返回值中的语言注入

ReSharper 现在允许在方法返回值上进行语言注入注解,扩展了以前对形参、字段和属性的支持。

改进的多行 To-do 注释

以前,多行 To-do 注释需要缩进才能继续。 ReSharper 2025.1 消除了这一限制,使编写和管理多行 To-do 更加简单,同时仍然强制执行提供的缩进。