ReSharper 2023.3 最新变化

ReSharper 2023.3 支持 C# 12 中的最新功能。另外,还包括全新的实体关系图和实体相关问题检查。此更新提供了多项重要的性能改进,包括经过优化的后台代码分析和控制分配给代码分析的资源量的功能。 ReSharper 2023.3 还带来了 AI Assistant 的重大更新。

AI Assistant 预览阶段结束 正式版

JetBrains AI Assistant 现已全面推出,搭载大量新功能和改进,助力提高您的工作效率。 ReSharper 的最新改进包括:

  • 上下文感知 AI 聊天
  • AI 操作更出色的项目感知
  • AI 赋能的多行代码补全
  • 单元测试生成
  • XML 文档生成
  • 能够创建自定义提示库

订阅 JetBrains AI Service,在 ReSharper 中以补充功能的形式使用 AI Assistant。

观看演示

C# 支持

在最新版本中,ReSharper 扩展了其支持的 C# 12 功能列表,即主构造函数、引用任何类型的别名指令、集合表达式、拦截器等。

查看这篇博文,深入了解 Rider 和 ReSharper 2023.3 中引入的 C# 支持的最新更新。

观看演示

性能

ReSharper 2023.3 现在可以识别和促进更多场景,让代码分析服务在被输入中断时可以增量运行。这项改进特别适合处理大型文件。

重新设计的 ReSharper 和 Visual Studio 快速操作的集成

借助最新更新,您可以控制分配给解决方案级代码分析的资源量。您现在可以选择 Low(低)、Moderate(中)和 High(高)模式的资源利用率。

注意,High(高)模式不会干扰编辑器中的输入,也不会降低 IDE 的响应速度。只有代码分析因代码输入而中断时,它才会逐渐开始增加 CPU 使用率,保持流畅的输入体验。同时,整个解决方案级分析都在后台处理源代码。

其他性能增强

对于具有大量目标类型对象创建的解决方案,例如 SomeType _field = new(),现在可以更快查找类型和构造函数的用法这项改进也会积极影响重构速度。

我们还修正了一些与处理注入语言相关的问题,这些问题曾经会导致 CPU 使用率增加。

UX/UI

重新设计的 Extract local function(提取局部函数)重构的用户体验

重新设计的 Extract local function(提取局部函数)重构的用户体验

我们重做了 Extract local function(提取局部函数)重构的用户体验。过去,从可用选项列表中为新函数选择位置是一项富有挑战性的工作,因为不清楚这种选择会有什么影响。

借助更新的用户体验,您现在可以直接在代码编辑器中查看新函数签名的预览效果。这样就可以很容易地了解它将被插入的准确位置,以及您的选择将如何影响引入的函数。您还可以查看哪些变量将被转换为形参而不是闭包,以及其他哪些函数将被重新定位以允许在新位置调用。

重新设计的 ReSharper 和 Visual Studio 快速操作的集成

重新设计的 ReSharper 和 Visual Studio 快速操作的集成

如果使用得当,Visual Studio 和 ReSharper 的快速操作可以很好地互补。借助 ReSharper 2023.3,您可以轻松利用这两个系统的强大功能。现在,您可以调整设置,仅使用 ReSharper 的快速操作、为两者显示建议图标,或者从单一访问点(即 ReSharper 灯泡菜单)调用所有快速操作。

Copy Code Reference(复制代码引用)的助记符

Copy Code Reference(复制代码引用)的助记符

ReSharper 2023.3 为 Copy Code Reference(复制代码引用)操作引入了访问密钥。现在,只需按一下即可选择上下文菜单中的每个代码引用类型。

C++ 支持

在 ReSharper C++ 2023.3 中,处理停用代码变得轻而易举。条件预处理程序分支内当前停用代码块中的代码补全现在会从全局作用域提供符号建议。 Find Usages(查找用法)也进行了更新,现在会在专门的结果部分中显示停用代码和宏主体中的可能用法。

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

代码格式设置

适用于 Razor 的新代码格式设置引擎

适用于 Razor 的新代码格式设置引擎

ReSharper 2023.3 为 Razor 引入了新的格式设置引擎。它与 ReSharper 目前的 C# 格式化程序兼容,因此支持近年来引入的 C# 语言结构以及 ReSharper 针对 C# 的大多数新格式设置选项。新的格式化程序运行速度也更快,预计问题也更少。但是,它确实修改了某些代码的默认格式设置。因此,我们引入了一个选项,可以还原为 Razor 原有的格式设置引擎。您可以在 ReSharper 的 Options(选项)下的 Code Editing | Razor | Code Style(代码编辑 | Razor | 代码样式)中找到该选项。

Entity Framework

针对 Entity Framework 相关问题的检查

针对 Entity Framework 相关代码中可能产生运行时异常的方法的用法,ReSharper 2023.3 带来了一些新检查。

观看演示

这些新检查适用于以下两种情况:

  1. 在数据库上下文中调用时产生异常,同时在 Entity Framework 或 Entity Framework Core 中无法转换为 SQL 的方法。
  2. 在数据库上下文以外调用时产生异常,同时专门作为数据库函数实现的方法。
重新设计的 Extract local function(提取局部函数)重构的用户体验

实体关系图

此版本引入了实体关系图 (ERD)。 ReSharper 中的 ERD 提供了数据库模型、实体之间关系的图形化表示,以及数据库模型分析洞察。

ReSharper 2023.3 中 Entity Framework 特定的分析会在 EF 模型中检查您的代码是否存在潜在问题,例如不受限的字符串属性长度和依赖关系循环。如果您随后在此类检查中调用上下文菜单并选择 Show Entity Relationship Diagram(显示实体关系图),则能够直观地调查问题。

请查看这篇博文,详细了解如何可视化显示 Entity Framework 关系和新检查。

单元测试

AI 赋能的测试生成
Beta 版

我们之前的版本引入了轻松创建单元测试的功能。 ReSharper 2023.3 中 AI Assistant 的最新更新为您提供了在单元测试中生成代码的选项,该选项利用了 LLM 的强大功能。

语法和拼写检查

适用于 Razor 的新代码格式设置引擎

JetBrains Grazie 已成为 ReSharper 的新内置语法和拼写检查工具。 Grazie 支持 20 多种语言,能够在 ReSharper 支持的编程语言(C#、C++、VB.NET)、标记语言(HTML、XML、XAML)和注释中捕捉自然语言错误。要将其他自然语言添加到 Grazie,请在 ReSharper 中转到 Options | Grammar and Spelling | General(选项 | 语法和拼写 | 常规)。

适用于 .NET 的 Qodana Community linter

很长一段时间以来,如果想要在 CI/CD 服务器上的 IDE 以外运行 ReSharper 代码分析,您只有一个选项 – ReSharper Command Line Tools 中的 InspectCode 工具。最近,Qdana 为加入我们的 .NET 工具阵容迈出了第一步,并启动了适用于 .NET 的 Qodana Community linter 的抢先体验计划。

Qodana 虽然与 ReSharper 基于相同的静态代码分析引擎,但还具有额外优势:

  • 用户可以在 Qodana Cloud 中使用签名旭日图检查分析结果,并快速判断其项目的整体健康状况。
  • 使用基线管理技术债务。

此外,适用于 .NET 的付费 Qodana linter 还允许运行第三方许可证审核、分析代码覆盖率和检测易受攻击的依赖项。

我们不会停用 ReSharper Command Line Tools,但从现在起,适用于 .NET 的 Qodana Community linter 将成为在 IDE 以外运行 ReSharper 分析的首选方式。

dotMemory

Linux 和 macOS 上的独立版 dotMemory dotUltimate Beta

现在,您可以在 Linux 和 macOS 操作系统上运行独立版 dotMemory。

反编译器

程序集差异

之前的版本中引入的 Assembly diff(程序集差异)功能现在可以比较 NuGet 软件包、文件夹和 .zip 文件。

程序集差异

用于比较程序集的功能现在具有更多比较选项。您可以选择多种不同的模式(Show all(全部显示)、Show only differences(仅显示差异)、Show only signature differences(仅显示签名差异)、Show only public API differences(仅显示公共 API 差异))。此外,您还可以指定是否希望 Diff(差异)忽略成员/特性顺序差异以及可以为 null 的引用类型的注解中的差异。

Assembly Explorer

Assembly Explorer 更新

  • 在 Assembly Explorer 中浏览 NuGet 软件包时,您现在可以查看这些 NuGet 软件包中包含的所有文件和文件夹。
  • 现在可以在节点表示树和 Properties(属性)窗格中查看 Win32 资源节点,包括大小和类型(如果可以确定)。

其他更新:

  • 现已引入解码 Win32 字符串表资源的功能。
  • ReSharper 现在可以在程序集/非程序集、捆绑包中的文件、存档、NuGet 软件包、比较的程序集和 Win32 资源的 Properties(属性)窗格中显示所打开文件的大小。
  • 现在可以验证程序集 Authenticode 签名。
  • 显式 #nullable disable 指令显示在反编译的源代码中。

其他

适用于以 ASP.NET Core 框架为目标的应用程序的新检查

适用于以 ASP.NET Core 框架为目标的应用程序的新检查

Dynamic Program Analysis 添加了三项针对以 ASP.NET Core 框架为目标的应用程序的新检查。这些检查会提醒您注意潜在后端性能问题,这些问题可能会降低应用程序的响应速度。

了解详情

用于识别存在漏洞的 API 用法的新检查

用于识别存在漏洞的 API 用法的新检查 安全

Rider 2023.3 带来了新的安全检查功能,旨在使已发布的漏洞更明显和更易理解。

新检查可识别项目中存在漏洞的 NuGet 软件包,高亮显示代码中使用这些库中存在漏洞的方法的实例。检测到漏洞后,系统将高亮显示有问题的代码,并提供快速补救措施。这些操作包括建议更新到较新的软件包版本和提供有关检测到的漏洞的深入信息。