ReSharper 2022.1 最新变化

2022.1 侧重于质量,具有多项改进和错误修正,特别关注 Blazor 开发和 C# 支持。

下载

可免费试用 30 天

C# 支持

We continue to improve support for C# 10, particularly global usings. 我们已经实现了两个新重构,它们也可用作上下文操作。

Extract Global Using(提取 Global Using)可以帮助您在项目中引入 global using 的概念。 在常规 using 指令上调用后,ReSharper 会建议将其提取到指定 GlobalUsings.cs 文件中(如果项目中还没有这样的文件,它将被创建)。 不再需要的常规 using 将从项目的文件中移除。

如果您决定将 global using 重构为常规 usingInline Global Using(内联 Global Using)重构也可以提供帮助。 在 global using 上调用时,它会将其从 GlobalUsings.cs 中移除,并将相应的 using 语句添加到项目中需要的文件中。

Find Usages(查找用法)和扩展方法的代码分析中支持 global using 功能。

We’ve looked into the approaching C# 11 and supported generic attributes.

可空引用类型

  • 我们已将针对不应为空的表达式的空检查的警告分为两个类别。 第一个警告针对的是根据 NRT 注解的说法从不为空的表达式。 第二个警告针对的是存在空实际运行时检查的表达式。
  • 我们添加了一个新设置,用于切换到 runtime enforced not null warnings only(仅限运行时强制非空警告)模式。 可从 Alt+Enter 菜单中的配置条目组访问 annotation-based(基于注解的)警告。
  • 不使用可空引用类型的项目现在支持 [MemberNotNull][MemberNotNullWhen] 注解。

端点

我们的端点支持现在适用于 ASP.NET Core 6 最小 API 和基于约定的路由。 包括导航、代码分析和代码补全。

Razor 和 Blazor

以下是我们为 Razor 和 Blazor 提供的部分最值得注意的功能和修正:

  • 我们添加了对 .NET 6 中的新 [EditorRequired] 特性的支持。 如果您想使用 Blazor 组件而不指定所需形参,也可以使用相应的检查和快速修复。
  • 我们已经在 Razor 语法中实现了备受期待的对 C# 本地函数的支持。
  • 我们改进了包含 Blazor 组件的 .razor 文件中的代码清理。 它不再移除所有 @using 声明。
  • 我们还修正了引用 Blazor 组件的 Razor 代码中的 If To Switch(将 If 转换为 Switch)和 Invert If(反转 If)上下文操作。
  • ReSharper 现在会为 Blazor 注入的属性使用正确的命名样式。
  • Comment with Line Comment(使用行注释进行注释)操作现在只注释 Razor 代码中需要的部分。
  • We’ve added navigation through inheritance hierarchy to Razor code. 现在,基础符号和派生符号会有相应的装订区域标记。 您可以点击它们导航到代码。

代码清理和格式设置

我们重新组织了 Alt+Enter 菜单中与 Code Cleanup(代码清理)和 Formatting(格式设置)相关的所有条目。 Format selection(设置选区格式)、Cleanup selection(清理选区)和 Apply syntax style(应用语法样式)合并为一个 Reformat and Cleanup(重新格式化和清理)条目,提供单个入口点。

除了这些更改之外,语法样式设置现已添加至 Configure code style(配置代码样式)和 Autodetect code style settings(自动检测代码样式设置)操作。 Preview code style(预览代码样式)面板也会显示语法样式的更改。

Unreal Engine 单元测试

The Unreal Engine testing framework is now supported. ReSharper C++ 能够发现 Unreal Engine 单元测试,并在编辑器中的每个测试旁添加相应的操作指示器,用于运行或调试测试或整个测试套件。 在 Unit Test Sessions(单元测试会话)窗口中,您可以检查测试结果,重新运行失败测试、所有测试或特定测试。

ReSharper C++ 2022.1 最新变化

更好的 C++ 支持

ReSharper C++ 现在更擅长处理隐式构造函数调用,允许在更多情况下查找用法并导航到调用的构造函数,包括:

  • 标准 (make_unique/make_shared) 和 Unreal 特定的 (MakeShared/MakeUnique) 智能指针创建函数。
  • emplace 容器方法。
  • static_cast 和 C 样式转换表达式。

如果使用了不正确的实参调用类 emplace 函数,ReSharper C++ 2022.1 还会显示重载警告。

ReSharper C++ 2022.1 最新变化

源生成器

在分析了源生成器支持的性能后,我们决定,从编译器获取源生成的文档时增加请求之间的延迟。

因此,源生成器不会在编译器之前运行,CPU 工作总量减少。 确切的性能增益取决于是否有其他功能也触发生成器,例如 Visual Studio 的整行补全。

性能

We’ve fixed a number of performance issues already and laid the groundwork for more. 这包括处理来自客户的性能快照、内部分析会话以及收集数据以在未来实施自动检查检测性能下降。

“进程外”模式的相关工作也在推进中。 Please refer to the newest update in our issue tracker.

ReSharper Command Line Tools

InspectCode 工具可以生成与 Static Analysis Results Interchange FormatSARIF,静态分析结果交换格式)兼容的输出文件。

Command Line Tools 现在支持 Alpine Linux

反编译器

  • 集成式反编译器现在可以显示平台程序集的 XML 文档注释,涵盖名称与 XML 文档文件名称不同的程序集,例如 System.Private.CoreLib。 XML 文档的路径现在会显示在反编译文件的标题中。
  • 我们在 Metadata(元数据)视图中关闭了导航重定向。
  • 我们在 blob 节点的属性中添加了解码/原始 blob 表示。
  • Assembly Explorer 现在支持转发类型([TypeForwardedTo] 特性)。 Locate in Metadata(在元数据中定位)操作也适用于转发类型、程序集和模块引用以及资源。
  • 我们改进了没有序列点的类型的 PDB 导航,例如接口和枚举。

dotPeek 2022.1 最新变化

改进了对 SQL Server 事件的支持 dotUltimate

dotTrace 将在 Windows(.NET Core、.NET 5+)以及 macOS 和 Linux(.NET Core 3.0+、.NET 5+)上支持来自 Microsoft.Data.SqlClient 提供程序的 SQL Server 事件。

dotTrace 2022.1 最新变化

通过拖放附加到应用程序 dotUltimate

现在,将特殊图标拖到应用程序窗口上,即可将分析器附加到正在运行的应用程序。

dotMemory 2022.1 最新变化

使用注释从覆盖率分析中排除代码 dotUltimate

您现在可以使用注释从覆盖率分析中排除某些行或代码块。 可用选项:

// dotcover disable
var i = 1;
var j = 10;
// dotcover enable

/* dotcover disable */ var i = 1; /* dotcover enable */

var i = 1; // dotCover disable this line

// dotcover disable next line
var j = 100;

要使某一选项起作用,必须引用 JetBrains.dotCover.MSBuild NuGet 软件包。 这是一个仅用于开发的依赖项,不会作为运行时依赖项添加到项目中。

dotCover 2022.1 最新变化

其他更新

  • 我们改进了 Move type to file(将类型移动到文件)重构,其中还包括上下文操作和快速修复。 现在,在常见情况下,预处理程序指令与类型一起移动。
  • 我们已经修正了“大文件系统更改”问题。 问题的根源是事件缓冲区溢出。 这会让 ReSharper 毫无缘由地检查解决方案中的所有文件,导致 CPU 使用率过高,严重时还会导致 UI 冻结。
  • 我们已经修正了在本地化版 Visual Studio 的 .sqlproj 文件中妨碍 ReSharper 功能的问题。
  • 我们已将 Metadata(元数据)树状图添加到 ReSharper(仅适用于 Visual Studio 2022)。 它允许您浏览程序集元数据中的所有条目,并提供搜索、导航到源等操作。 For a full list of the features, please refer to the description in dotPeek documentation – the decompiler was the first product to have it.
  • 我们已经解决了几个长期存在的“ReSharper 在切换 Git 分支时显示红色代码”问题。 我们已经确定了发生问题的几个特定场景并加以修正。
下载

可免费试用 30 天