ReSharper Ultimate 2020.1: Improved Support for C# 8.0 and C++20, Dataflow Analysis of Integer Values, and Much More
ReSharper Ultimate 2020.1 is now available! We encourage you to try out the first major update this year. Read about the release highlights in this blog post, or visit our What’s New page to see a comprehensive list of improvements.
This release has tons of changes to the architecture of ReSharper that bring us 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 or the 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.
Now let’s talk about the most exciting updates we have for you in the 2020.1 release.
Dataflow analysis of integer values in C#
Check out this new type of code analysis, which tracks how the values of all int local variables vary. It verifies the correctness of all common operations on such variables to detect useless or possibly erroneous pieces of code.
Nullable reference types
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, along with a few other new inspections.
- We’ve made a lot of improvements and fixes to XAML support that cover WPF, Xamarin.Forms, UWP, and Avalonia XAMLs.
- Several small but useful features to Navigation will benefit you whether you prefer to use the mouse or the keyboard to interact with ReSharper. You can middle-click to Go to Declaration, use a full path in Go To File / Go To Everything to find files, or press Ctrl+Enter in the result list of Go to File to highlight the file in the Solution Explorer window.
- 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.
- Localization Manager: you can now leave a comment (or edit an existing one) for any value that comes from resource files right inside the grid. Several performance fixes and UX improvements will help you make the grid faster to load and filter, use right-to-left languages, navigate more precisely to specific rows from the text editor and refactoring dialogs, and more.
- Code formatting brings new settings for C# Code Styles that cover the trailing comma.
See the full list of fixes completed in the 2020.1 release cycle on YouTrack.
ReSharper C++ 2020.1 supports several new C++20 features, including constrained type placeholders, abbreviated function templates, and using enum declarations. New coding assistance features like Rearrange Code and Complete Statement help you write and change your code more efficiently. The Introduce Using Enum and Convert to Scoped Enum refactorings offer an easy way to modernize your enum usage. Other changes include new code inspections with accompanying quick-fixes, improved code completion, and new navigation features. For game developers, ReSharper C++ introduces initial support for HLSL (the High Level Shading Language) and offers better conformance to the Unreal Engine coding standard.
- You can profile .NET Core applications on macOS and Linux using the Tracing profiling mode. To do this, you should use either JetBrains Rider or dotTrace command-line profiler.
- You can attach the profiler to running .NET Core processes on Linux.
- You can navigate through the 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. The feature is available in dotTrace Standalone (both Performance Viewer and Timeline Viewer), in Visual Studio, and JetBrains Rider.
- We’ve implemented some bug fixes and stability improvements.
- We’ve also reworked the internal data format. This means that dotMemory 2020.1 snapshot format is incompatible with earlier versions. At the same time, this will let us introduce some new features in the future releases.
- Update for the users of JetBrains Rider IDE: you can apply both runtime and coverage results filters.
- The Intermediate Language (IL) Viewer supports custom attributes for interface implementations and generic parameter constraints. For example, a compiler can apply a NullableAttribute and TupleElementNamesAttribute to these entities.
- Support for nullable reference types 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.
You can use any of these alternative ways to get ReSharper Ultimate 2020.1:
- Update right inside ReSharper: ReSharper | Help | Check for updates
- Use our Toolbox App.