ReSharper 2021.2 为 C# 代码分析提供了带快速修复的新检查和可空引用类型支持,并且许多可用于手动编写的代码文件的功能现在也可用于源代码生成的文件。 ReSharper 2021.2 还支持 Assembly Explorer 中的单文件应用程序,改进了动态程序分析中的问题处理,以及记录、扩展方法和 catch 变量的高级命名规则。
可免费试用 30 天
您是否使用临时变量来交换变量值? 现在有一种更优雅的方式可以执行此操作! ReSharper 2021.2 将通过新的 Swap via deconstruction 快速修复帮助您对代码进行现代化改造!
减少代码中的分配数量,并增加吞吐量! 使用 Array.Empty<T>
替换空数组创建。
如果您正在分配新的 Type[0]
,ReSharper 将建议使用 Type.EmptyTypes
以使内存使用更高效。
如果不需要特定的 EventArgs
,ReSharper 将告诉您可以使用 EventArgs.Empty
替换 new EventArgs()
。
其他改进:
.editorconfig
中的 generated_code
属性,可将文件或文件夹标记为生成的代码并将其排除在处理范围之外。 switch
语句和 switch
表达式,享受 Find similar issues 和代码分析的性能改进。 在启用可空引用类型之后您在代码库中是否具有许多可空警告禁止?
ReSharper 会指示不再需要且可以安全移除的禁止 (!
)。
一个新的上下文操作,可用于在范围内搜索所有可空警告禁止。 在 Find Results 工具窗口中,可以重新评估是否需要禁止。
我们引入了一个新的重构来更改可空性! 可通过快速修复、通过 Refactor This 操作,或在添加或移除可空注解 (?
) 时通过就地重构使用这个新重构。
ReSharper 将更新可空性注解,并建议在整个代码库中传播更改。
使用 JetBrains.Annotations 特性并启用可空引用类型时,可以使用多种具有相应快速修复的新检查。
将 JetBrains.Annotations 特性更新为 NRT 语法和编译器支持的特性! 例如,ReSharper 可以将 [CanBeNull] string
更新为 string?
.
ReSharper 将通知您冗余 JetBrains.Annotations 特性,例如 [NotNull] string
或 [ItemCanBeNull] List<string?>
。 当然,它将提供快速修复来更新您的代码。
不允许类型注解语法时,具有快速修复的新检查会添加编译器支持的注解,例如:
[JetBrains.Annotations.NotNull] T param
添加至 [DisallowNull] T param
(where T: class?
) [JetBrains.Annotations.CanBeNull] T
添加至 [System.Diagnostics.MaybeNull] T
(在 C# 8 中,不允许 T?
语法) ReSharper 增加了新的检查和快速修复来帮助您使用编译器支持的注解,例如 [DisallowNull]
、[AllowNull]
、[MaybeNull]
和 [NotNull]
。
新的检查会检测冗余编译器注解,例如在将 [AllowNull]
应用于可空类型并且快速修复将其移除时。
在可以使用可空引用类型语法时,ReSharper 将建议执行此操作。
还有一些其他改进也值得一提:
在此博文中了解详情:ReSharper 和 Rider 2021.2 中 C# 可空引用类型的最新变化。
源生成器可用于减少繁琐、重复的开发工作,并在编译时生成代码。 在 ReSharper 2021.2 中,许多可用于手动编写的代码文件的功能也可用于源代码生成的文件。 我们改进了编辑器支持,增强了调试器,并增加了对解决方案级错误分析 (SWEA) 和重构的支持。
对于生成的代码,警告和错误会显示在编辑器中和标记栏上。
解决方案级错误分析 (SWEA) 现在包含由源生成器生成的文件。 如果在您的项目中的生成文件中存在错误,您将能够立即发现并导航到该错误。
您可以使用新选项切换此行为以包含源代码生成的文件,该选项默认情况下会启用,它位于 ReSharper | Options | Code Inspection | Settings | Enable solution-wide analysis 中。
现在,可以通过源代码生成的文件触发重构。 使用 Rename 重构可重命名生成的属性。 ReSharper 还将重命名手动编写的代码中的相关符号!
同样,Change Signature 可用于验证在更改后生成的代码是否仍可编译。
现在,您可以使用 Find Usages,搜索继承者,通过 Ctrl+点击 和 Navigate To 从生成的代码导航到手动编写的代码等。
已启用语义高亮显示,以便正确高亮显示事件、字段和属性等类成员。 在适当的位置显示所有嵌入提示。
在调试时显示 ReSharper 自己的数据提示。 这通过搜索、属性高亮显示等功能提供了更强大的调试帮助。
ReSharper 现在支持由 VB.NET 中的源生成器生成的代码。
在上一版本中,我们实现了对 ASP.NET 路由模板的支持。 在 v2021.2 版本中,我们继续朝这个方向发展,并带来了更好的 HttpClient
URI 字符串支持:
HttpClient
时,代码补全将建议在使用 [Route]
、[Http{Method}]
或 [AcceptVerbs]
特性注解的控制器中可以解析为操作的所有 URI。 为导航增加了有用的功能:
有时,为记录、扩展方法和 catch 变量指定高级命名规则会很有用。 从此版本开始,可以配置这些规则。
如果您更喜欢使用 Pico 大括号(缩进)样式,我们帮您搞定。 Pico 样式已作为一个选项添加到 ReSharper | Options | Code Editing | C# | Formatting Style | Braces Layout 页面上的 Brace Layout 标签页。
我们在几种情况下更改了默认格式设置偏好设置,以与 Visual Studio 默认设置保持一致。
借助新的 Inline Function 重构,您可以使用函数体快速替换函数调用。 ReSharper C++ 将执行必要的转换,处理所有名称冲突并重新格式化生成的代码。
ReSharper C++ 2021.2 引入了隐式类型转换的嵌入提示,这可能会导致无意的数据丢失或性能问题。 ReSharper C++ 现在可以指示您的代码中发生隐式转换的位置。
现在,DPA 为每个问题存储两个值 – 最大值和当前值。 这可以防止漏报,因为之前问题可能会低于阈值并从问题列表中消失,这不是因为它们已被修正,而是因为它们的启动条件发生了变化(程序运行的时间较短,所需的功能未执行,等等。)
The embedded decompiler can now decompile single-file apps. 它支持 .NET Core 3.1、.NET 5 和即将推出的 .NET 6 SDK 的单一文件格式。 使用 Assembly Explorer,您可以像以前一样浏览单文件应用内的捆绑程序集。
在此版本中,我们继续改进您分析内存分配的方式。 Memory Allocation 视图中增加了两个新的标签页:
如果编辑器开始滞后,处理大型视图的 Razor 开发者可以关闭占用大量 CPU 的辅助和自动建议。 您可以在此处找到这些设置:ReSharper | Options | Environment | Editor | Behavior | Razor | Allow CPU-intensive typing assist。
我们在 InspectCode 工具中引入了一项重大更改。 从 v2021.2 开始,InspectCode 会在开始分析之前自动恢复 NuGet 软件包并构建一个解决方案。 如果不需要此行为,请使用 --no-build
键禁用恢复 NuGet 软件包和构建解决方案。
可免费试用 30 天