What’s new in ReSharper Ultimate 2019.3

ReSharper Ultimate 2019.3 introduces a brand new Localization Manager and Type Name Hints, and offers even better support for C# 8, C++ 20, and Unreal Engine. Navigation, code styles, and unit testing are enhanced, and Command Line Tools for ReSharper and dotTrace now work on Linux and macOS.


Free 30-day trial available

Localization Manager

Localization Manager

The brand new Localization Manager helps you work more efficiently with loads of .resx files in your solution. It shows everything you have in your .resx files in one single grid, so you can observe the current state of the application or website localization and quickly find any missing resource values in any culture.

You can:

  • Add, edit, rename, search for, inline, move, and safely delete any localized resources.
  • Find all the resources that are missing localized values.
  • Hide any locales you don’t need right now.
  • Create missing culture .resx files.
  • See a tooltip that shows a detailed description of what the problem is with the cell.

Check out the Localization Manager under ReSharper | Windows or in the context menu in the Solution Explorer.

To learn more, please see Localization Becomes Easier with the Localization Manager.

Even Better C# 8 support

Even Better C# 8 support

The new ReSharper release handles C# 8 even better. It now includes:

  • A better understanding of Nullable Reference types including support for notnull constraints.
  • Target-typed switch expressions.
  • Early support for default interface methods.
  • A new hint, “Local function can be static”, with an accompanying quick-fix.
  • A new quick-fix to enable nullable annotations and warnings in a file, project, or all projects in a solution.
  • A new quick-fix to add the EnumeratorCancellation attribute to CancellationToken parameters of async iterators.

Additionally, the code inspection “Type or type member is never used” has been split into two separate options, one for types (“Type is never used”) and another for type members (“Type member is never used”).

Code Generation

Code Generation

The Generate action knows more about C# 8 and helps you learn, too, with:

  • A new quick-fix Add missing arms to check enum values exhaustively.
  • A new quick-fix and context action to generate type patterns in switch expressions.
  • Nullability being taken into account when generating equality/relational members/comparers.

Also, there is a new option to use System.HashCode to implement GetHashCode when generating equality members or equality comparers for C# and VB.NET, which will help make your code cleaner.

Code Formatting

Code Style

In this release, we’ve delivered on one more long-awaited request. C# naming settings now support reading from/exporting to EditorConfig.

In addition to this huge change, there are several smaller changes that give you more control over the style of your code:

  • For those who prefer to use var instead of explicit types only when the type of initializer expression is evident/apparent, ReSharper can now detect more “evident” cases. There is also a “compatibility” mode to match the Roslyn behavior.
  • There is a new code style option, which is compatible with StyleCop and Roslyn, to add parentheses that clarify precedence only for a group of operators nested with others from the same group. For example, if you can’t remember whether && or || takes precedence, this option will help you to clarify it with parenthesis.
  • Comment Code now adds an indent to a comment by default. There’s a new setting to “Place comments at first column when commenting out code” if you want to turn it off.
  • The options pages to set up indentations now display the appropriate notification when the Autodetect indent size and value setting is ON.
  • There is also a notification tooltip explaining the Configure formatting and Autodetect formatting features on the C# formatter options pages.
Cross-platform ReSharper Command Line Tools

Cross-platform ReSharper Command Line Tools

People often asked us whether it was possible to run ReSharper Command Line Tools on a CI hosted on Linux. For a long time, our answer was, “No, it can’t be done.” However, we worked hard to remove all Windows-specific parts so that we could move everything to Mono runtime for Linux and macOS. Don’t worry, it still uses the .NET Framework on Windows.

Today we are happy to announce that ReSharper Command Line Tools have come to Linux and macOS! Nothing is stopping you from using the powerful ReSharper code analysis on non-Windows operating systems.

Type Name Hints

Type Name Hints

We hope you like the Parameter Name and Code Annotations hints that we introduced in ReSharper 2019.1. In this release, we’ve gone further and are now ready to give you Type Name Hints. They are available for:

  • A lambda’s parameters.
  • All var occurrences, including pattern matching and tuples deconstruction.
  • Range variables inside LINQ statements.
  • At the end of a line in a method call chain.
Navigation and Find Usages

Navigation and Find Usages

Most of us have times when we want to know where a particular reference is used in our code. For a long time, it was possible to run the “Find dependent code” action on a reference to find all the places where types or type members from that reference appeared. However, there have always been limitations.

Starting with the 2019.3 release, we’ve eliminated a couple of them:

  • Find dependent code now works for NuGet references and can be run for a whole solution instead of just a project!
  • Consuming APIs extends “Navigate to” actions and might be helpful if you want to list all methods that receive objects of a specific type in their parameters.
  • The Find results window for Find dependent code has new filters.
  • You can now navigate to the external sources of NuGet packages that have a source symbols package.
Unit Testing update

Unit Testing update

Unit Testing tool windows are already in great shape and cover most of what we would expect from them. Still, we thought we could add more ways for you to customize your view of the list of unit tests, so we did.

  • Use the new advanced Group by functionality in the Unit Test Explorer and Unit Test Session tool windows to create a custom grouping. With the added Duration element, you can now group unit tests based on the time it takes them to execute.
  • You can filter unit tests by the target framework in the Unit Test Session tool window, in the event that you have more than one (which is quite common nowadays) and don’t want to see some of them.
Identifier highlighting update

Identifier highlighting update

Identifier highlighting has been completely reworked. We’ve added more color settings for extra precision with code highlighting (available in Tools | Options | Fonts and Colors). New color settings include:

  • A general section for colors of entities in all languages.
  • Dedicated settings for C# colors.
  • New color settings for constructs in different languages.
Other features

Other features

  • New NUnit inspections cover combinatorial unit tests and individual parameters of parameterized unit tests.
  • The Parameter Info popup is available for tuples.
  • Xamarin support has a couple of important fixes, such as x:DataType and Class attribute support.
  • Typing assists for deleting new lines and for backspacing before a new line now leave a space either to separate tokens or when this is required by the formatting rules.
C++20 support

C++20 support

C++20 is feature-complete and will be officially signed off next year to provide C++ developers with a range of long-awaited goodies. ReSharper C++ 2019.3 already supports many of these features, augmenting them with additional analysis and insights.

First, ReSharper C++ is now aware that aggregates can be initialized from a parenthesized list of values, and that an extra ADL needs to be performed in some cases with function templates.

Not only are concepts supported in ReSharper C++’s parser, but Rename refactoring and Find Usages are also available. Even better, code analysis can show you more details about errors related to Concepts. For example, if the overload resolution fails because a Concept’s requirement is not satisfied, you’ll see all the details in a tooltip. By the way, in ReSharper 2019.3 we’ve also added color to the tooltip that shows the details on the overloading resolution failures.

We’ve started a series of C++20 and ReSharper C++ blog posts, which you can use to learn about the new language features and their adoption in ReSharper C++.

Unreal Engine 4 support

Unreal Engine 4 support

When ReSharper C++ detects you are developing an Unreal Engine project, it adjusts its behavior to be more UE4-specific.

The “new” postfix template for UCLASSes expands to a proper factory function call (which will register the created object in the garbage collector). Live templates with the corresponding names are now available to help you quickly generate USTRUCT/UCLASS/UENUM/UENUMCLASS.

Unreal Engine’s Smart Pointers (TSharedPtr, TSharedRef, TWeakPtr, TUniquePtr) are now handled by ReSharper C++ similarly to std::shared_ptr/std::unique_ptr. This means features like Parameter Info, code analysis, and postfix code completion work for Smart Pointers.

Finally, there are some performance improvements for UE4 projects. For example, we fixed a hang after "Refresh Visual Studio Project" in the UE4 editor.

See What's new in ReSharper C++.

Command-line profiler on macOS and Linux

Command-line profiler on macOS and Linux dotUltimate

The command-line profiler finally comes to macOS and Linux. dotTrace.sh has the same functionality as its Windows counterpart and is distributed as a .tar.gz archive and as a NuGet package.

See What's new in dotTrace 2019.3.

dotCover improvements dotUltimate

dotCover 2019.3 gets several improvements:

  • Support for Unity 2018.3 and later on all operating systems. To perform coverage analysis of Unity tests, you must use JetBrains Rider.
  • Support for Microsoft Fakes.
  • Ability to group coverage results by nested namespaces in Rider, Visual Studio, and in reports generated by the dotCover console tool.

See What's new in dotCover 2019.3.


Free 30-day trial available