ReSharper Ultimate 2020.1’最新变化

ReSharper Ultimate 2020.1 为 C# 中的整数值引入了新的数据流分析工具,并为可空引用类型功能以及 C++20 的新功能提供了更好的支持。 它改进了 XAML 支持和 Unreal Engine 支持,将多个新功能引入导航,并支持在 Localization Manager 中添加注释。 反编译器支持更多的 C# 7.x 和 8.0 功能。

下载

可免费试用 30 天

C# 中整数值的数据流分析

C# 中整数值的数据流分析

这一版本的 ReSharper 引入了一种新型代码分析,可以在应用程序中跟踪整数值的用法。 这种新型的分析会跟踪所有 int 局部变量的值如何变化,并验证这些变量上的所有常见运算的正确性,以检测无用或可能出错的代码段。 即,它会警告您:

  • 结果总是为 truefalse 的关系/相等运算符。
  • 检查 int 值的启发式不可到达的 switch case。
  • 无意义的算术运算,如乘以 1、加 0 等。
  • 可能的 int 溢出。
  • 可能的除以 0

为了提高分析精度,我们还添加了两个新的 JetBrains.Annotations 特性来使用 int 类型的类型成员和参数:([NonNegativeValue][ValueRange(from, to)])。 这些特性指定了特定 int 成员的值在运行时如何变化。

C# 支持

C# 支持

我们继续添加了对 C# 8 语言功能的更多支持。 我们在后台对 C# 语言支持进行了许多重构来准备代码分析和其他功能(如重构和 ReSharper Build),以支持可空引用类型 (NRT)。 在 ReSharper 2020.1 中,代码分析会报告与可空引用类型相关的编译警告并为其中大多数警告提供了快速修复。

还有一些新的检查和快速修复:

  • 针对可空引用类型,检测冗余类型参数约束。
  • 检测并使用方法的 async 重载(可用时),而不使用 sync 重载。
  • 使用 nameof 表达式,而不使用 typeof(SomeType).Name 构造,以便获得当前类型的名称。

性能新闻

此版本对 ReSharper 的架构进行了大量更改,让我们距离在 Visual Studio 进程外运行所有核心 ReSharper 功能的目标更近一步。 所有这些修改都在后台进行,因此,您在 ReSharper 2020.1 发布版的 UI/UX 中不会注意到任何变化。

如果您错过了我们距离将 ReSharper 移出进程的目标更进一步的相关新闻,现在正是了解我们进度的好机会。

导航更新

此次更新为导航带来了多项较小但实用的功能,这些功能会同时惠及主要使用鼠标以及主要使用键盘与 ReSharper 交互的用户:

  • 您现在可以点击中键(点击鼠标的滚动按钮)来调用 Go to Declaration
  • Go to File 的结果列表中按 Ctrl+Enter 可以在 Solution Explorer 窗口中高亮显示文件。
  • 您现在可以在 Go To File/Go To Everything 中使用完整的路径来查找文件。
改进的 XAML 支持

改进了 XAML 支持

在 v2020.1 中,我们对 XAML 支持进行了大量的改进和修复,涵盖 WPFXamarin.FormsUWPAvalonia XAML。 

我们很高兴可以为绑定中的数据上下文引用和符号解析提供更好的支持:

  • 使用 d:BindingContext
  • 在以 Xamarin.Forms 为框架的 Picker.ItemDisplay
  • Xamarin.Forms 为框架的 RelativeSource 绑定
  • ScrollViewer 控件的模板绑定
  • ItemsSource 用作嵌套元素时
  • TreeView.ItemContainerStyle

UWP 项目中,我们添加了对以下对象的支持: 

  • 条件 XAML 标记
  • CustomResource 绑定 

其他修复包括对以下情况的支持:

  • 在自定义 XML 命名空间架构的定义中使用统一资源名称 (URN)
  • 将斜线符号放置在资源名称中
  • Avaloniax:Static 命令
单元测试的更新

单元测试的更新

ReSharper 2020.1 开始,您可以导出和导入任何单元测试会话 。 当您更改代码中的某些内容并希望为两个分支运行/使用同一组单元测试时,这让您可与团队、在计算机之间或在分支之间共享会话。

另外,升级到新的主要 ReSharper 版本后,将保留已创建的单元测试会话,如果您不想丢失打开和锁定的会话,这将非常方便 。

在 Localization Manager 中添加注释

在 Localization Manager 中添加注释

您要求,我们实现! 网格上添加了用于注释的新行。 您现在可以直接在网格中为资源文件中的任何值添加注释(或编辑现有注释)。 您还可以导出和导入这些注释。 如果您不使用注释,或者现在不需要注释,可以通过点击 Show/Hide comments 图标来隐藏它们。

除此之外,我们还实现了一些性能修复,使网格加载和筛选速度更快,消除了一些 UI 冻结,并使滚动更平滑。

值得一提的是,还有不少 UX 改进:

  • 改进了对从右到左的语言的支持
  • 可以从文本编辑器和重构对话框更准确地导航到特定行
  • 增强了对话框中的代码补全和验证
代码格式化

代码格式化

代码格式化为 C# 代码样式带来了涵盖尾随逗号的新设置。 可以在 ReSharper | Options | Code Editing | C# | Code Style | Trailing comma 下找到它们,而且除了极少的个别情况,它们都与 StyleCop SA1413 检查兼容。

C++20 支持

更好的 C++20 支持

C++20 标准已几乎定稿,ReSharper C++ 扩展了对这种最新标准的支持。 现在支持多个新语言功能,包括约束类型占位符、缩写函数模板和 using enum 声明。 此外,ReSharper C++ 还提供了一个使用 C++20 模板语法更新 lambda 声明的快速修复,以及一个轻松引入 using enum 声明的重构。

游戏开发

适合游戏开发的更多功能

借助对 Unreal Engine 支持的更新,ReSharper C++ 2020.1 改进了 Rename 重构并引入了对 SpatialOS GDK 和包含虚拟文件路径的 USF 文件的支持。 ReSharper C++ 还严格遵守 Unreal Engine 指南,禁止 Use auto 检查并遵循控制台变量和日志类别的命名约定。

ReSharper C++ 2020.1 对 HLSL 提供初始支持。 即使在目前这个早期阶段,此支持也包括多个功能:基本的代码高亮显示、智能代码补全以及快速导航。

ReSharper C++ 最新变化

Next Important Call

dotTrace 中的 Next Important Call dotUltimate

现在,您可以使用 Next Important Call 操作在调用树中导航。 按 CtrlShift向右箭头,dotTrace 会将您导航至最相关的节点(例如,自身执行时间长的节点)以进行进一步分析。

该功能可在 dotTrace Standalone(Performance Viewer 与 Timeline Viewer)、Visual Studio 和 JetBrains Rider 中使用。

dotTrace 2020.1 最新变化

可空引用类型支持

在 dotPeek 中支持可空引用类型

此版本为 C# 语言功能带来了更好的支持:

  • 可空引用类型 (NRT) 的支持已登陆反编译器。 请注意,它仅适用于声明,不适用于方法的主体。
  • 我们还添加了对反编译接口默认成员Auto-Implemented Property Field-Targeted 特性的支持。 
  • 我们改进了对反编译元祖组件名称的支持。

dotPeek 2020.1 最新变化

下载

可免费试用 30 天