ReSharper 2020.2 为 C#8 带来了新检查和快速修复,支持可空引用类型,并提供了期待已久的保存时代码清理、改进的单元测试运行程序以及无障碍功能改进。 另外,ReSharper C++ 将您的 Unreal Engine 开发提升到更高水平,并对 C++/CLI 支持、导航和代码分析进行了许多改进。
可免费试用 30 天
可空性代码分析现在可以感知更多的用例并能够通过析构和 foreach
周期跟踪不正确的可空性。 还提供了相应的快速修复。
代码分析现在会为 API 考虑 JetBrains.Annotations 特性(NotNull
和 CanBeNull
),甚至在禁用可空引用类型 (#nullable disable
) 的代码中也是如此。
如果您为项目安装了 System.Linq.Async
NuGet 包,现在还可以在 IAsyncEnumerable<T>
上使用上下文操作将 foreach
转换为 LINQ 并将 LINQ 转换为代码。
现在可以使用合适的快速修复轻松地生成 IEqualityComparer<T>
和 IComparer<T>
实现。
现在,验证已实现或重写成员的可空性时,代码分析会考虑编译器注释(如 AllowNull
和 DisallowNull
)。
如果变量和返回类型从未具有或返回可空值,可以使用新的检查和快速修复使它们“不可空”。
代码分析现在可以遵循 .editorconfig 文件中的 dotnet_diagnostic 规则。 在 .editorconfig 文件中指定检查的严重性,如 dotnet_diagnostic.CS1058.severity = hint
,ReSharper 会相应地显示检查。
对接口功能中默认实现的支持在此版本中已得到增强。 代码编辑器中的左侧装订区域会显示已实现或重写的方法,且我们的重构和导航现在能够感知此 C# 语言功能。
XAML 代码中现在提供嵌入提示。 我们为标记属性名称和 DataContext
以及边距和填充提供提示,如果您不想记住它们的顺序,此功能将非常方便。
可以通过 Alt+Enter 菜单为解决方案禁用 Suppress nullable warning with ! 快速修复。
现在,您可以将 ReSharper 配置为在保存文件时自动启动 Code Cleanup! 终于支持这一功能啦!
此功能不再需要第三方插件。 可以在 ReSharper | Options | Code Editing | Code Cleanup
选项页面上启用此功能。
现在,有更精细的新范围来运行 Code Cleanup,如最近修改的文件和最近打开的文件,它们可以显著缩短获取结果的时间,因为 Code Cleanup 无需在整个解决方案中运行。 对于更精确的调整,您可以指定将哪些文件限定为“最近”。
代码清理完成后自动保存文件。 可以在 ReSharper | Options | Code Editing | Code Cleanup
选项页面上启用此功能。
有许多改进来帮助缩短 Code Cleanup 执行时间:
我们为 .NET Framework 和 .NET Core 从头重新设计了单元测试运行程序,以便为在 Visual Studio 进程外运行的两个运行时使用相同的运行程序。 它会帮助我们解决一系列问题:发现、运行、调试单元测试,并让我们能够完全控制 .NET Core 测试的单元测试层次结构。
新测试运行程序内置支持:
UI 中最显著的变化是现在 ReSharper 在 xUnit 和 NUnit 框架的 .NET Core 测试中支持 DisplayName
特性。
将筛选器应用于单元测试树(如 Passed/Failed 等)意味着计数器会提供两个单独的数字——所有测试的总数和满足筛选标准的测试数。
Navigate To 菜单中添加了两个新操作:
我们引入了对 NUnit 的 Assert.Multiple
方法的支持,这样就可以在第一次失败后不退出代码的情况下检查多个断言。
可以在选项中直接编辑按持续时间分组的时间范围。
这一版本提供对屏幕阅读器的支持,如 JAWS、NVDA 和 Microsoft Narrator。 现在这些屏幕阅读器可以更好地访问:
我们为 UWP 开发者带来好消息——终于支持通过 x:Bind
进行编译绑定了!
ReSharper 能够正确地解析 x:Bind
代码并提供多个检查和相应的快速修复。 它会针对缺失属性 setter、BindBack
特性和重载冲突的情况向您发出警告。 而且,有一组 Create from Usage 快速修复可以在 C# 代码隐藏内生成适当的字段、属性或方法。
还有适用于 x:Bind 表达式内 propertyPath
、BindBack
和 UpdateSourceTrigger
特性的代码补全和参数信息。
Change Signature 和 Safe Delete 重构现在可以感知 XAML 代码中的方法用法,并相应地更新它们。 另外,如果您从 C# 代码隐藏调用 Make Static/Const 和 Encapsulate Field 重构,它们就可以从 XAML 代码中直接使用并正确地更新 XAML 用法。
可空性感知已集成到 x:Bind
代码分析中。 如果 C# 代码中有 CanBeNull
和 NotNull
特性,ReSharper 现在会在 XAML 代码中直接向您显示 null 相关的检查,例如,适用于 propertyPath
中所用方法参数的“Possible System.NullReferenceException
”和“Possible null
assignment to non-nullable entity”。
其他 ReSharper 功能,如 Find Usages 和 Go to Declaration,也可以感知 x:Bind
绑定。
在 2020.1 中,Rider 在 macOS 和 Linux 上从 Mono 迁移到 .NET Core。 在这一版本中,ReSharper 命令行工具可以在 Windows、Linux 和 macOS 的 .NET Core 上运行。
请注意,ReSharper 命令行工具不再捆绑 Mono,且适用于 macOS 和 Linux 的工具现在要求 .NET Core 3.1。
将 .NET Core 而不是 Mono 用作运行时的另一个好处是 ReSharper 命令行工具可以安装为 .NET Core 全局工具。 运行以下命令可以安装它们:
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
并使用 jb tool_name [options]
运行工具,例如:
jb inspectcode yourSolution.sln -o=<pathToOutputFile>
在这一版本中,用于绘制关系图的 yFiles 引擎已更新到最新版本。 除了我们的优化,这一新的 yFiles 版本还显著改进了绘制结果图的性能。
现在可以将结果图导出为新格式:
图表工具窗口终于支持 Visual Studio 深色主题了。
导航到代码中外部程序集的类型用法现在非常简单。 ReSharper 现在可以从 Go to Type 搜索结果直接导航到 Find Usages。 要试用这一功能,请使用键盘或鼠标在列表中高亮显示类型,然后使用相应的快捷键调用 Find Usages 或 Go to Usage。
从版本 v2020.2 开始,可以使用您喜爱的键映射方案中映射到操作的快捷键调用一些 ReSharper 操作,如直接从 Go to Symbol 和 Go to File Member 对话框调用快速文档。
在这一版本中,Conflicts 对话框已重新设计成 Refactorings 界面中的一个单独步骤。 之前普通列表已替换为按文件分组的树。
在表达式上调用 Introduce parameter 或 Introduce field 重构时,ReSharper 会询问应向表达式的哪一部分应用重构。
ReSharper C++ 2020.2 引入了对 Unreal Engine 项目模型的支持,能够为 include
指令提供更智能的自动导入建议并支持不同的解决方案配置。 ReSharper C++ 还更严格地遵守 Unreal Engine 指南,调整了检查严重性和代码生成操作。
为了更方便地导航,Search Everywhere/Go To 现在可以处理来自引擎源的符号,如库符号。 还有几个新检查,可以强制遵守 Unreal Engine 指南并提醒您在 Unreal Editor 中刷新项目文件。
ReSharper 许可证现在涵盖 ReSharper 和 ReSharper C++ 产品,对 C++/CLI(两种语言之间的桥梁)的支持获得许多更新且 C++/CLI 和 C# 之间的互操作得到改进。
ReSharper C++ 可以查找 C# 代码中的派生符号,且 Go to Base Symbols 和 Go to Derived Symbols 现在适用于导入的 CLR 实体。
ReSharper C++ 现在会检查您分配内存的方式并在目标类型无效时为您建议快速修复来将 gcnew
替换为 new
(反之亦然)。 当您想要在托管类或接口上使用 C++ final
说明符时,另一个检查会向您发出警告,并建议快速修复来将其设为 sealed
。 另外,您现在可以使用快速修复将 C 样式转换转化为 safe_cast
。
ReSharper 现在会正确地对齐相似代码的列,即使只有一部分对齐组正在格式化,所以添加分号或大括号不再会打乱对齐。
dotCover 控制台运行程序中有一些改进:
--reportype=SummaryXml
参数让您可以创建新的汇总报告类型,其中包括整体涵盖多少类、方法和语句的数据。 --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
独立 dotTrace 和 Rider 中的 dotTrace 可以在 Windows 上分析 Mono/Unity 应用程序的原生部分。 只需使用 'Enable native profiling' 选项开始一个会话,您就会在性能快照中看到原生和托管调用堆栈。 此功能对于分析 Unity 游戏中的性能瓶颈非常有用。
dotTrace 控制台分析器中进行了以下改进:
现在,您可以将固定的对象作为单独对象集打开,并能够将无法从 GC 根获取的对象作为单独对象集打开。
dotMemory 命令行分析器中的改进包括:
dotPeek 继续改进对最新版本 C# 的支持,新版本提供:
Throw
表达式。NullablePublicOnly
特性。可免费试用 30 天