What’s new in ReSharper Ultimate 2020.1

ReSharper Ultimate 2020.1 introduces a new dataflow analysis tool for integer values in C# and offers better support for the nullable reference types feature and also for C++20’s new features. It improves XAML support and Unreal Engine support, introduces a couple of new features to Navigation, and enables the ability to make comments in the Localization Manager. The decompiler supports more C# 7.x and 8.0 features.

Download

Free 30-day trial available

Dataflow analysis of integer values in C#

Dataflow analysis of integer values in C#

This version of ReSharper introduces a new type of C# code analysis to track the usage of integer values in your application. This new type of analysis tracks how the values of all int local variables vary, and it verifies the correctness of all common operations on such variables to detect useless or possibly erroneous pieces of code. Namely, it warns you about:

  • Relational/equality operators always giving true or false results.
  • Heuristically unreachable switch cases checking int values.
  • Meaningless arithmetic operations, such as multiplication by 1, addition of 0, etc.
  • Possible int overflows.
  • Possible division by 0.

To improve the precision of analysis, we’ve also added two new JetBrains.Annotations attributes to use with type members and parameters of the int type: [NonNegativeValue] and [ValueRange(from, to)]. These attributes specify how the values of the particular int members can vary in runtime.

C# supports

C# support

We continue to add more and more support for C# 8 language features. We’ve refactored a lot under the hood in C# language support to prepare code analysis and other features, such as refactorings and ReSharper Build, to support nullable reference types (NRT). In ReSharper 2020.1, code analysis reports compilation warnings related to nullable reference types and provides quick-fixes for most of them.

There are also several new inspections and quick-fixes:

  • To detect redundant type parameter constraints with respect to nullable reference types.
  • To detect and use async overloads of methods when available instead of sync overloads.
  • To use the nameof expression instead of using the typeof(SomeType).Name construction to get the name of the current type.

Performance news

This release has tons of changes to the architecture of ReSharper that bring us closer and closer to our goal of running all the core ReSharper features out of the Visual Studio process. All these modifications took place under the hood, so you won’t notice any changes in the UI/UX in the ReSharper 2020.1 release build.

If you missed the news about our progress toward moving ReSharper out of process, this is a good opportunity to catch up and learn about where we are now.

Navigation updates

This update brings several small but useful features to Navigation, and they benefit both those who primarily use the mouse and those who primarily use the keyboard to interact with ReSharper:

  • You can now middle-click (click your mouse’s scroll button) to Go to Declaration.
  • Pressing Ctrl+Enter in the result list of Go to File highlights the file in the Solution Explorer window.
  • You can now use a full path in Go To File / Go To Everything to find files.
Improved XAML support

Improved XAML support

In v2020.1, we’ve made a lot of improvements and fixes to XAML support that cover WPF, Xamarin.Forms, UWP, and Avalonia XAMLs. 

We are happy to provide much better support for data context inference and symbol resolution in bindings: 

  • When d:BindingContext is used
  • In Picker.ItemDisplay in Xamarin.Forms
  • RelativeSource binding in Xamarin.Forms
  • Template binding for the ScrollViewer control
  • When ItemsSource is used as a nested element
  • In TreeView.ItemContainerStyle

In UWP projects we have added support for: 

  • Conditional XAML markup
  • CustomResource binding 

Additional fixes include support for:

  • Using the Uniform Resource Name (URN) in a definition of a custom XML namespaces schema
  • Putting a slash symbol in a resource name
  • x:Static directives for Avalonia
Updates to Unit Testing

Updates to Unit Testing

Starting with ReSharper 2020.1, you can export and import any of your Unit Test Sessions. This allows you to share them with your team, between your computers, or between branches when you change something in the code and want to run/cover the same set of unit tests for both branches.

Also, Unit Test Sessions that have already been created are preserved after upgrading to a new major ReSharper version, which is handy if you don’t want to lose opened and locked sessions.

Comments in Localization Manager

Comments in Localization Manager

You asked, and we delivered! There are new rows on the grid for Comments. You can now leave a comment (or edit an existing one) for any value that comes from resource files right inside the grid. You can also export and import these comments. If you don’t use comments, or if you don’t need them right now, you can hide them by clicking the “Show/Hide comments” icon.

Apart from that, we’ve implemented several performance fixes that make the grid faster to load and filter, eliminate some UI freezes, and make scrolling smoother. 

It’s also worth mentioning that there are quite a few UX improvements: 

  • Improved support for right-to-left languages
  • More precise navigation to specific rows from the text editor and refactoring dialogs
  • Enhanced code completion and validation in the dialogs
Code formatting

Code formatting

Code formatting brings new settings for C# Code Styles that cover the trailing comma. They can be found under ReSharper | Options | Code Editing | C# | Code Style | Trailing comma, and they are also compatible with the StyleCop SA1413 inspection except in a very few corner cases.

C++20 support

Even better C++20 support

The C++20 standard has almost been signed off on, and ReSharper C++ extends its support for the latest standard. Several new language features are now supported, including constrained type placeholders, abbreviated function templates, and using enum declarations. Additionally, ReSharper C++ offers a quick-fix to update a lambda declaration with the C++20 template syntax and a refactoring to introduce using enum declarations with ease.

Game development

More features for game development

With updates to its Unreal Engine support, ReSharper C++ 2020.1 improves the Rename refactoring and introduces support for SpatialOS GDK and USF files with virtual file paths. ReSharper C++ also adheres more closely to the Unreal Engine guidelines by suppressing the Use auto inspection and following naming conventions for console variables and log categories.

ReSharper C++ 2020.1 provides initial support for HLSL. Even at this early stage, this support includes a variety of features, from basic code highlighting to smart code completion and quick navigation.

What’s new in ReSharper C++

Next Important Call

Next Important Call in dotTrace dotUltimate

Now, you can navigate through Call Tree using the Next Important Call action. Press Ctrl+Shift+Right and dotTrace will navigate you to a node that is most relevant for further analysis (for example, a node with high own execution time).

The feature is available in dotTrace Standalone (both Performance Viewer and Timeline Viewer), in Visual Studio, and JetBrains Rider.

What’s new in dotTrace 2020.1

Nullable Reference Types support

Support for Nullable Reference Types in dotPeek

This release brings better support for C# language features:

  • Support for nullable reference types (NRT) has come to the decompiler. Please note that this only works in declarations, not in the bodies of methods.
  • We’ve added support for decompiling the default members of interfaces and Auto-Implemented Property Field-Targeted attributes. 
  • We’ve improved support for decompiling tuple component names.

What’s new in dotPeek 2020.1

Download

Free 30-day trial available