ReSharper 2023.2 改进了对 C# 的支持,为处理局部函数和原始字符串以及解决常见 Entity Framework 问题提供了新检查。 新版本还带来了对 C++ 重构以及更多 C++20 和 C++23 功能的支持。 在 ReSharper 2023.2 中首次亮相的功能包括单元测试的便捷创建和导航、预测调试器模式和全新的 AI Assistant。
可免费试用 30 天
ReSharper 2023.2 中新增的代码检查和快速修复适用于原始字符串字面量和局部函数,以及常见的 Entity Framework 问题和冗余的可以为 null 指令。 对 C# 12 的早期支持涵盖主构造函数和带有可选形参的 lambda 表达式。 我们还改进了 ReSharper 对弃元和可处置资源的支持,并添加了新的内联和行间提示。
ReSharper 的单元测试获得重大更新,新增功能可让您轻松导航并为生产代码创建测试!
要创建测试,只需调用 Generate Code(生成代码)操作,然后选择 Unit Test(单元测试)或按 Ctrl+U,C。 ReSharper 让您可以选择测试类名称,甚至可以使用您的首选测试框架创建新项目(如果尚未创建)。 创建测试后,您可以使用 Navigate To(导航到)操作或按 Ctrl+U,F 在实现和测试代码之间导航。
基于 IntelliJ 的 IDE 和 .NET 工具的 2023.2 版本包含一项主要新功能:AI Assistant。 由 AI 提供支持的初始功能集提供了集成式 AI 聊天,并通过上下文操作自然融入一些核心开发工作流,这使 AI Assistant 能够解释所选代码片段、消除潜在问题,以及为您生成 XML 文档。
我们为处理原始字符串添加了新的 C# 检查和上下文操作,还改进了输入辅助并增加了格式设置选项:
查看相应博文,详细了解改进的原始字符串支持。
我们为使用 Entity Framework 等对象关系映射 (ORM) 框架处理数据库时可能遇到的常见问题添加了数个新检查、快速修复和上下文导航选项。
在这篇博文中详细了解新的 Entity Framework 相关检查。
ReSharper 2023.2 引入了两项新检查和相应的快速修复,旨在提高局部函数的代码可读性:
return
或 continue
置于方法末尾的局部函数之前的建议。 return
、continue
或其他控制流跳转语句将其与可执行代码分开的建议。 如果您不想或不能更改代码,ReSharper 2023.2 将在局部函数之前显示带有 return;
或 continue;
语句的行间提示,帮助您在不更改代码的情况下理解代码。
阅读这篇博文详细了解新检查。
#nullable
指令和 NRT 注解的检查 针对 #nullable
指令和 NRT 注解推出了多项新检查:
JetBrains.Annotations
特性相矛盾的检查。 要详细了解这些检查,请阅读此博文。
var
声明的导航 为用于包装其他类型的常用类型从 var
导航时,所有导航操作(Go to…(转到…)、Find Usages(查找用法)等)现在都会建议底层类型。 例如,从具有 ImmutableArray<Person>?
类型的变量的 var
关键字使用 Go to declaration(转到声明)操作时,ReSharper 会建议导航到 Person
。
您可以在以下博文中了解详情。
在 2023.2 版本中,我们引入了对 C# 12 预览中的非记录类和结构体的主构造函数支持。 有多项检查可以检测初始化能够以新的主构造函数表示的类型,并建议应用快速修复来大幅减少代码重复的数量。
有时,类型的初始化不应过于简单,并且不能再使用主构造函数表达。 对此,我们引入了多项上下文操作,将主构造函数形参反向替换为构造函数和普通字段。
要查看主构造函数所有功能的实际运作情况,请参阅独立博文。
为了支持 C# 12 语言更新,我们引入了对 lambda 表达式中默认形参值的支持。 除了与识别此语法相关的标准警告消息集之外,我们还调整了现有检查 The parameter has the same default value(形参具有相同的默认值),将 lambda 中的默认形参值纳入考量。 有关详情,请参阅此处。
ReSharper 2023.2 引入了两项新的代码检查,旨在更好地控制对象处置:
我们还改进了 Generate dispose pattern(生成处置模式)功能,支持 IAsyncDisposable
接口,并能够生成异步方法来释放资源。
有关这些新增内容的更多信息,请参阅此处。
代码分析的 C# 弃元支持获得了一系列实用改进:
_
的变量和形参,具有 The _
name is typically reserved for local parameters without usages(_ 名称通常为没有用法的局部形参保留)警告。 它们看起来像是“被丢弃”的值,但实际上,它们所代表的恰恰相反。 查看博文详细了解改进的弃元支持。
将值传递到元组实参或返回值类型时,C# 允许您跳过组件名称。 但是,如果没有名称,在不查看目标类型的情况下就很难判断每个组件的含义。 例如,许多软件开发者将不得不检查元组(null
、false
)的指定位置以理解其组件的含义。
这就是嵌入提示可以派上用场的地方! 当这些名称在组件表达式中尚不明显时,ReSharper 2023.2 将显示带有元组组件名称的嵌入提示,使代码更易阅读和理解。
对于 null 和默认组件,即使目标组件没有显式名称,ReSharper 2023.2 也会显示有关其目标类型的提示。 它会对字符串和对象类型进行例外处理,因为这些类型通常信息量不大。
名称可以提高可读性的另一种常见情况是析构模式,其中显式名称可以从 Deconstruct
方法或源元组组件获知。 开发这些提示是为了在模式本身不包含足够的数据来理解匹配的内容(例如 value is ({ }, true, null)
)时为您提供额外上下文。
#pragma warning
指令的支持 Pragma 指令可供通过 ID 轻松禁用或恢复编译器警告。 不过,虽然此类 ID 是与编译器通信的好方法,但人类开发者可能很难理解。 如果没有百科知识,开发者可能会不清楚 CS0168
或 CS0618
这样的 ID 指的是什么,也不确定需要注意什么。
LINQ 查询通常较为复杂,涉及多个转换和投影。 调试复杂 LINQ 查询可能相当耗时,特别是在大型数据集上。 为了帮助您轻松检查查询每个步骤的输出,ReSharper 现在将在调试期间以嵌入提示的形式显示中间结果。
借助显示中间结果的编辑器改进,您现在应该能够快速识别过程中是否出现意外值或不正确的转换。
ReSharper C++ 引入了 Safe Delete(安全删除)重构,让您可以从源代码安全移除符号。 这种重构适用于类、函数、变量、枚举器、命名空间,甚至概念。
删除符号之前,ReSharper C++ 会搜索其用法并让您预览源代码更改,帮助您确定移除没有错误。 尝试删除类或命名空间等复杂实体时,ReSharper C++ 将递归检查其所有成员的用法。
新版本带来了对多项新语言功能的支持,包括 if consteval
、C++23 标准库模块、[[no_unique_address]]
特性和 static operator()/operator[]
。
ReSharper 2023.2 引入了多个用于 C# 代码格式设置的新选项,旨在提升链式方法调用的可读性。
第一个代码格式设置选项控制第一个方法调用之前是否出现换行符。 第二个选项适用于方法和属性调用混合的情况,确定是否应在属性调用后插入换行符。
AI Assistant 不与 ReSharper 捆绑,必须单独安装。 目前,我们还推出了一个等候名单来管理使用 AI Assistant 功能的请求。
有关 AI Assistant 的更多信息以及如何通过 Toolbox App 或 dotUltimate 安装程序进行安装的说明,请参阅我们的网络帮助。
ReSharper 内的 AI Assistant 默认可以识别您的开发环境:解决方案中使用的编程语言、框架、库和技术。 这种意识使 AI 能够对查询生成更准确、更具体的响应。
Smart chat(智能聊天)选项使 AI Assistant 能够引用特定文件和符号,检索代码段或最新更改,以及查找特定方法的用法。 因此,它可以提供更准确的建议。
安装 AI Assistant 插件后,ReSharper 的上下文操作将提供数个由 AI 提供支持的选项。 AI Assistant 可以帮助您:
ReSharper 2023.2 中引入的预测调试器模式能够预见执行程序触发的所有可能状态,无需实际执行,这使其能够:
预测调试器将为程序执行提供更深入的洞察。 您还能够尝试不同的值并对代码进行故障排除,无需为每次更改重新启动调试流程。
您可以转到 ReSharper | Options | Tools | Debugger | Editor Integration | Predictive debugger | Show predicted values (beta)(ReSharper | 选项 | 工具 | 调试器 | 编辑器集成 | 预测调试器 | 显示预测值(测试版))启用预测调试器。
调试器目前处于测试版状态,因此您的反馈将极大地帮助其释放全部潜力。 请务必向我们的问题跟踪器报告您遇到的错误,以及任何建议或请求。
ReSharper 2023.2 提供了一种详细比较两个程序集的方法。 仔细检查特定程序集两个版本之间的差异并搜索较新版本中可能引入的潜在漏洞时,这个功能特别实用。
要比较程序集,请前往 Assembly Explorer(程序集资源管理器)工具窗口,点击 Compare Two Assemblies(比较两个程序集)。 单文件应用程序和 .exe
或 .dll
文件都可以进行比较。
点击此处详细了解该功能。
在 ReSharper 2023.2 中,我们修改了缓存 IDE 系统运行所需数据的方法。 此修订已获得无数性能测试的支持,将显著减少每个打开的解决方案的磁盘空间消耗。 在实际中,这意味着减少花费在磁盘输入/输出上的总体时间,缩短解决方案的加载时间。
另一个提高解决方案加载速度的更改是 ReSharper 内部组件构造逻辑的重构。 点击此处了解详情。
可免费试用 30 天