dotUltimate 2022.2.x

Released: Aug 2, 2022

Mises à jour de 2022.2.x

2022.2.4

Updated Nov 8, 2022

Features

ReSharper

  • Improved typing performance when using ReSharper C++ IntelliSense.

Fixes

Rider

  • Fixed the CVE 2022-41032 vulnerability Microsoft recently uncovered in .NET 7.0.0-rc.1, .NET 6.0, .NET Core 3.1, and NuGet clients (NuGet.exe, NuGet.Commands, NuGet.CommandLine, and NuGet.Protocol).
  • Fixed an error that was preventing Rider from building projects that target Unreal Engine 5.1 Preview on macOS.
  • Fixed an error causing Rider to interfere with the processing of T4 text templates in Microsoft Visual Studio.

ReSharper

  • Fixed the CVE 2022-41032 vulnerability Microsoft recently uncovered in .NET 7.0.0-rc.1, .NET 6.0, .NET Core 3.1, and NuGet clients (NuGet.exe, NuGet.Commands, NuGet.CommandLine, NuGet.Protocol).
  • Fixed an error that was preventing ReSharper from executing the Go to Symbol action.
  • Fixed an error causing ReSharper to crash the File Structure window within Visual Studio 2022.

2022.2.3

Updated Sep 13, 2022

Fixes

Rider

  • Resolved an issue preventing you from previewing the changes in Unity project packages version control in real time.
  • Rider’s basic functionality no longer stops working after a Perforce commit.
  • Rider doesn’t freeze after launching the Unreal Editor.
  • Fixed the bug causing Rider to re-cache solutions (in particular, Unreal Engine solutions) every time one is loaded.
  • “Reformat and cleanup” action from the Solution Explorer does not get stuck in an infinite loop anymore.
  • Fixed the behavior causing projects to build error-free in spite of Code Analysis showing multiple errors.
  • Fixed the bug causing solution folders to double for solutions loaded from GitHub.
  • Restored normal operation of Code Analysis for Unity projects.
  • Fixed a performance issue with a 57-freeze in an Event Dispatch Thread.

ReSharper

  • Fixed a bug causing InspectCode CLI caches to be inconsistent after turning on Nullable Reference Types.

2022.2.2

Updated Aug 22, 2022

Fixes

Rider

  • Fixed an error causing Rider 2022.2 to fail to launch Unreal unit tests.
  • Fixed an error preventing the use of Perforce in a project using the preconstructed version of the Unreal Engine.
  • Fixed an error that occurred when debugging an MSTest in Rider without privilege-elevation.

ReSharper

  • Fixed the issue causing Visual Studio to crash or hang when ReSharper debugger features are enabled.
  • The underlined character in the Refactor menu has been reverted to “R” instead of the erroneous “f”, restoring the Alt+R hotkey functionality.

2022.2.1

Updated Aug 10, 2022

Fixes

Rider

  • Fixed the issue that led to the inability to add or remove files after stopping a running application.
  • Fixed an error that broke Code Analysis for Unity projects.
  • Fixed the issue preventing the DPA runner from passing the stop signal to an app.

ReSharper

  • Fixed the issue where the ReSharper installer got an “Access denied” error, requiring admin privileges to install or update to version 2022.2.
  • Fixed an installation issue caused by the “strong name key container not being found” exception.
  • Fixed an error that led to Settings.StyleCop file rules being automatically replaced by RuleSet files after the update to 2022.2.
  • Fixed an issue causing InspectCode to hang.
dotTrace
  • Fixed an error where the exception preview didn’t contain the exception title.
  • Fixed the issue preventing additional events from being collected if data collection was initiated after the “Drop” or “Get snapshot” actions.
  • Fixed a bug that caused the Rider backend to crash whenever a snapshot taken on Mac with an M1 chip was opened.

2022.2

Updated Aug 2, 2022

Features

Rider

Performance

  • Microsoft .NET 6 runtime for the Microsoft Windows backend
    • Rider’s Windows backend has been migrated to the .NET 6 runtime. It now uses the .NET 6 runtime to run the backend service on all supported operating systems: Windows, Apple macOS, and Linux. Thanks to the optimizations in the .NET 6 runtime itself, Rider’s overall performance has improved compared to v2022.1.
    • NGen has also been replaced with the CrossGen utility to create native images on Windows after installing Rider. As CrossGen works with the .NET runtime and is cross-platform, this helps Rider startup and open solutions faster.
    • Please note that Rider doesn’t run CrossGen during installation, but only when you first launch Rider. This means that the first launch can take slightly longer, but all subsequent launches will be faster.
  • “Cold startup” improvements
    • Solutions start up faster when you open them for the very first time (“cold startup”) and Rider has no information about them. On cold startup, all the projects are now loaded twice: first the IDE loads the projects to get the information about each one, then it runs “NuGet restore”, and then, when everything is ready, it loads the projects a second time.
    • Optimized the first project-loading stage so that Rider fetches only the information it needs for restoring NuGet packages.
  • Solution-wide analysis optimizations
    • Optimized the memory usage of Rider with the Solution-Wide Analysis mode turned ON, both in terms of memory traffic (number of memory allocations) and in terms of memory consumption.
      • The data stored in memory has been reviewed and patterns were found that allowed for the data to be deduplicated/normalized.
      • Now utilizes specialized collection types to further reduce the working set.
      • These optimizations result in a 5-10x memory consumption improvement and faster Solution-Wide Analysis loading.

C# 11

  • Required Members
    • In C# 11, class, struct, and record types gained the ability to declare a list of required members. This is the list of all properties and fields that are considered required and must be initialized during the initialization of a type’s instance. Types inherit these lists from their base types automatically, providing a seamless experience that removes boilerplate, repetitive code.
    • Apart from being aware of the required keyword for members inside a class, struct, or record type, Rider now provides additional support for the required keyword:
      • There is a required keyword in the code completion.
      • Most of the compiler errors and warnings are available.
      • The required modifier has been added to the Modifiers order on the Preferences/Settings | Editor | Code Style | C# | Syntax Style page.
    • Added a new Add initializer for required members quick-fix for cases where you’ve created a type’s object but haven’t initialized the members yet. It automatically generates all of the missing required members for your object – you just need to fill in the members’ values with meaningful data.
  • Checked user-defined operators
    • Rider now shows all of the compiler errors and warnings. To fully support checked user-defined operators, Rider now has a couple more inspections and a context action.
    • Updated the Unchecked/checked context is redundant inspection to take into account checked operators when they are used in this context.
    • If you have a set of user-defined operators and some of them already have a checked version, Rider will now help you propagate checked operators to the whole set. A new inspection called The operator does not have a matching checked operator while other operators do will notify you which operators don’t have a checked operator yet and suggest a quick-fix to generate the checked versions automatically.
    • If you haven’t used checked operators in your codebase yet, but want to start adding them, a new context action called Create matching checked operator can be used. It is available on every user-defined operator and generates a checked version of an operator right from the Alt+Enter menu in one click.
  • Raw strings
    • C# 11 improves the ability to embed other languages or text formats into C# code by introducing the concept of "raw" strings.
    • Rider now has basic “raw” string support including compiler errors and correct parsing and color highlighting for """ syntax, pairs of double quotes, and placeholders inside interpolated strings ({{...}} syntax).
  • List patterns
    • C# 11 continues to expand the set patterns available in the language. This time around, C# allows matching through list-like structures, such as arrays, strings, and List<T>-like collections.
    • Rider now fully supports list patterns with error checking, code completion, and code analysis.
  • More C# 11 features
    • Added support for the new unsigned right shift operator (>>>), including support for user-defined operator >>> overloading.
    • Added support for simplifying the use of Span<char> values as a replacement for string instances, since in C# 11 it's possible to directly pattern-match string constants against the values of type Span<char> and ReadOnlySpan<char>.

Code Analysis

  • Top-level statements
    • .NET 6 introduced new project templates with the use of C# 9 top-level statements. Top-level statements simplify declaring a Program class or public static void Main(string[] args) method. But sometimes the explicit startup class Program is necessary or more desirable to use. This release adds the new context action To explicit 'Program' class to execute a transformation to the old style.
    • At the same time, if you have an existing Program startup class and wish to migrate to top-level statements, you can use the new Convert to top-level code context action.
  • Updates to the INotifyPropertyChanged support
    • Reworked the INotifyPropertyChanged support. It no longer relies on external annotations to detect common INotifyPropertyChanged APIs, which means support for more MVVM frameworks and INotifyPropertyChanged base classes could be added automatically. Rider now emits a SetField method that enables the most concise syntax for INotifyPropertyChanged notifications.
    • It's also now possible to add property change notifications for all of the properties in the type or file.
  • Refactorings in the Alt+Enter menu
    • To increase the discoverability of refactorings, the most commonly used refactorings were reviewed and related context actions have been introduced in the Alt+Enter menu that depend on the current context.
    • Added the Extract method context action when you call the Alt+Enter menu on a selected piece of code.
    • Change Signature, Transform Parameters, Convert to extension method, and Convert Property To Method refactorings are all now available as context actions over member signatures.
  • More suggestions for using a nameof operator
    • Rider now recognizes the registrations of DependencyProperty in WPF projects and suggests using a nameof operator to capture the corresponding CLR property name. Built-in live templates have also been updated to emit nameof instead of string literals.
    • Often Rider can’t recognize the special meaning of a particular string literal in your code that is used to specify the name of some code entity like a member or type name. For these cases, a new Capture element name context action has been introduced for string literals with identifiers that can reference a code entity in the context containing the string literal.
  • Structural Search and Replace
    • Quick-fixes which come from Structural Search And Replace (SSR) patterns can now be applied in the scope of a file, folder, project, or entire solution. It affects user custom patterns, Rider built-in code inspections, and the corresponding fixes based on the SSR.
  • Other
    • Rider now detects some assignment patterns in your code and suggests more idiomatic C# code with pattern matching.
    • Rider is now able to replace some is patterns under ?: expressions with the more concise as under the ?? expression, effectively eliminating a temporary variable.

UI/UX

  • Default settings for window layout
    • Added a way to apply the same window layout settings to all of the solutions you work on. If, for instance, you move a tool window to the right, that’s where it will be for all your solutions.
    • This behavior will be the default if you’re new to Rider. Otherwise, you can enable it in the main menu by selecting Windows | Layout Settings | Use the Same Layout for All Projects.
  • Redesigned solution configurations
    • Redesigned how solution configurations are shown. Projects such as Unity, Unreal Engine, or Xamarin often have a lot of configurations, targets, and platforms. Previously, combinations of all these entities produced a huge number of items in the Solution Configurations menu. Starting with this release, you no longer have to look through a long list of items to select the exact combination of configuration, target, and platform. You can simply click on each parameter type one by one until you’ve selected the desired combination.
    • To reduce clutter on the main toolbar, the solution configuration list has been moved to the build icon’s dropdown menu (the green hammer).
    • If you want to move the solution configurations back to the toolbar, you can select Show Configuration on Toolbar from the list.
    • The solution configuration list is still on the toolbar when you are working on Unity, Unreal Engine, or Xamarin projects, since the solution configurations are used heavily in these types of projects.
  • Resizable Run/Debug widget - Made it possible to change the width of the Run/Debug widget on the main toolbar. If there is space available on the toolbar to extend the Run/Debug widget, you can drag the left-hand corner of the widget icon and resize it. This means you can create more space for the widget when you want or need it.
  • Merge All Project Windows action on Apple macOS [macOS 11+] - For macOS, the ability to organize your working space by merging all opened project windows into one has been added, turning each window into its own tab.
  • Welcome screen - Updated how the Cloning repository progress bar is displayed on Rider’s Welcome screen. It is now shown right in the Projects list, making it clearer and easier to use.
  • Code Completion Settings - You can now access the Code Completion Settings and configure your preferences right from the kebab button (three vertical dots) in the code completion popup.

MAUI support [Early Preview]

  • Introduced an early preview of .NET Multiplatform App UI (.NET MAUI) support - In this release, support for projects that target the Android and Apple iOS platforms has been added. You can use run configurations to run and debug your project, as well as to deploy your application to a target device. Please note that macOS, Apple Mac Catalyst, Blazor Hybrid, and WinUI aren’t fully supported yet.

Solution Explorer

  • Safe Delete refactoring - Added support for Safe Delete refactoring on a project level. You can invoke it with the Delete key or with the Refactor This action on a project in Solution Explorer. Rider will search for usages of the selected project. If there are any usages, conflicts will be shown, and if not, the project will be deleted and Rider will remove any leftover references or imports. There’s an option to remove a project without these checks as well – just uncheck the Search for usages option when the Safe Delete dialog is shown and Rider won't run this search.
  • Better support for solution filters - Rider now makes working with filtered solutions much easier for you. You can now filter a project, a set of projects, a solution folder, or even all projects out of the resulting solution. Rider now provides two more advanced actions, Load Direct Project Dependencies and Load Entire Project Dependency Tree. Using these will make Rider check all of the dependencies for the target project and load the required set of projects, and then you can quickly start working on the filtered solution.
  • Assembly Explorer - The Assembly Explorer now provides a better presentation for the ReadyToRun (R2R) and NGen assemblies:
    • The way ReadyToRun (R2R) and NGen assemblies are presented in the Assembly Explorer has been improved. A small processor-looking icon, as well as NGen or R2R labels, are now displayed next to each assembly's name.
    • The Metadata tree has the ReadyToRun header.
  • Other features:
    • The Solution Explorer view now shows source files generated by source generators.
    • Projects are now sorted in true alphabetical order in the Solution Explorer, File System, and Unity Explorer views.

Game Zone

  • Unreal Engine support
    • New Unreal Module - Creating a new module with game logic comes with a long list of chores: add a folder, add a Build.cs file to the folder, create a class that initializes the module, update the .uproject and Target.cs files, and so on. Rider now has an action to help you automate these tasks: Add | New Unreal Module.
    • New Unreal Plugin - You can now create different types of plugins right from Rider – just use the Add | New Unreal Plugin action and it will generate all the necessary files for the new plugin.
    • Symbol Servers - When debugging, the library symbols may not always be available on your local machine. In this case, you can use symbol servers. In Rider on Windows, you can now configure the debugger to use the symbol server of your choice.
    • Support for Spec tests - Rider now supports Spec tests from the Unreal Engine automation testing framework. If you have a set of tests defined in the Define method after the DEFINE_SPEC macro or the BEGIN_DEFINE_SPEC and END_DEFINE_SPEC macros, Rider will successfully discover them, so you can run and observe them in the Unit Tests view.
    • Emplace-like function calls - Rider now understands that Emplace-like function calls (such as TArray<..>::Emplace) imply object construction, so it will warn you about invalid arguments passed to the constructor. You can see parameter name hints and parameter info while typing arguments. You can also go to a constructor definition directly from an Emplace call, and vice versa.
    • Other updates:
      • Replaced the Build solution button with a Build startup project button on the main toolbar for Unreal Engine projects.
      • In Unreal Engine projects, the code completion list now includes the Widgets metadata specifiers.
  • Unity support
    • A new toolbar is available for Unity projects, and the connection status is now shown in the toolbar instead of the status bar. Additionally, the play/pause/step buttons have been removed from the toolbar by default, but can be added back.
    • Added inspections to ensure the return values of Mathf methods are used.
    • You no longer have to restart the Unity Editor to launch the profiling process. The profiler can now attach to and detach from running Unity processes.

Plugins

  • dotCover [dotUltimate] - Added a coverage summary indicator to the editor. This can be helpful if you find the red and green highlighting produced by the dotCover plugin overwhelming - the new tool is much less obtrusive. Look for the shield-shaped icon in the Inspections widget. The color and fill reflect the code coverage of the current document, and clicking on it will navigate you through the statements that are not covered.
  • dotMemory [dotUltimate] [Microsoft Windows only] - Rider now comes with dotMemory, our memory profiling tool, built in. Here are its key features:
    • Two memory profiling modes are available in the Run widget and Run | Switch profiler configurations in the main menu – Memory (sampled allocations) and Memory (full allocations).
    • You can attach the profiler to a running process from the Run menu.
    • You can also watch the Timeline Graph unroll in real time. Select an interval and open the Memory Allocations view. It is equal to the same view in dotMemory Standalone and allows you to dig deeper into the analysis of a specific time frame.
    • Please note that the dotMemory plugin doesn’t allow you to collect snapshots, and it only works on Windows in the 2022.2 release.
  • Markdown - It’s now possible to easily generate tables of contents in Markdown files based on the document headers. This new action is available from the Insert and Generate pop-up menus that you can invoke via the Alt+Insert shortcut or with a right click. Rider will insert a table of contents at the current caret position and enclose it with <!-- TOC --> tags, so that you can update it later by calling the same menu.
  • dotTrace [dotUltimate] - You no longer have to restart the Unity Editor to launch the profiling process. The profiler can now attach to and detach from running Unity processes.

Web development

  • Support for Angular standalone components - Added support for Angular standalone components. Rider now properly recognizes components, directives, and pipes marked as standalone: true.
  • Updates for Vue 3:
    • Rider now understands type narrowing in v-if/else directives.
    • Improved support for Pinia, the Vue team’s recommended state management solution that works as a global store. Both completion and resolve now work in Vue with Pinia library and you can navigate to state properties and actions defined in the store.
  • TypeScript 4.7 support - Rider now comes bundled with TypeScript 4.7, supporting new language features like moduleSuffixes and ESM in Node.js. It will automatically insert the .js extension to the import statement if module is set to node16 or nodenext in your tsconfig.json file. Additionally, Rider supports the typesVersions field in package.json files.

F# support

  • Reworked the Parameter Info popup for F#
    • Parameter Info contains details about the expected arguments of a function. The popup appears as you write a function application or a method call, or you can press Ctrl+P to see it as you read your code. Starting with this release, the Parameter Info popup supports curried applications and highlights the correct method overloads. It also shows method, function, and parameter descriptions, parameter default values, extension methods information, and JetBrains CanBeNull/NotNull annotations. Additionally, you can see the Parameter Info in attributes.
    • You can now use either the global or local .NET tool version of Fantomas. Rider will use the appropriate tool automatically, allowing you to sync the Fantomas version within your team.
    • Added a new quick-fix, Change type of binding, which will be helpful when a defined return type differs from the actual type of an expression.

Database support

  • Introduced two new resolve modes: Playground and Script.
  • Windows authentication is once again available for Microsoft SQL servers.
  • Collations and charsets are now generated with the table’s DDL for Microsoft SQL Server.
  • Rider now offers basic support for 3 additional databases: DuckDB, Mimer SQL, and Apache Ignite.

ReSharper

C# 11

  • Required Members
    • In C# 11, class, struct, and record types gained the ability to declare a list of required members. This is the list of all properties and fields that are considered required and must be initialized during the initialization of a type’s instance. Types inherit these lists from their base types automatically, providing a seamless experience that removes boilerplate, repetitive code.
    • Apart from being aware of the required keyword for members inside a class, struct, or record type, ReSharper now provides additional support for the required keyword:
      • There is a required keyword in the code completion.
      • Most of the compiler errors and warnings are available.
      • The required modifier has been added to the Modifiers order on the Preferences/Settings | Editor | Code Style | C# | Syntax Style page.
    • Added a new Add initializer for required members quick-fix for cases where you’ve created a type’s object but haven’t initialized the members yet. It automatically generates all of the missing required members for your object – you just need to fill in the members’ values with meaningful data.
  • Checked user-defined operators
    • ReSharper now shows all of the compiler errors and warnings. To fully support checked user-defined operators, ReSharper now has a couple more inspections and a context action.
    • Updated the Unchecked/checked context is redundant inspection to take into account checked operators when they are used in this context.
    • If you have a set of user-defined operators and some of them already have a checked version, ReSharper will now help you propagate checked operators to the whole set. A new inspection called The operator does not have a matching checked operator while other operators do will notify you which operators don’t have a checked operator yet and suggest a quick-fix to generate the checked versions automatically.
    • If you haven’t used checked operators in your codebase yet, but want to start adding them, a new context action called Create matching checked operator can be used. It is available on every user-defined operator and generates a checked version of an operator right from the Alt+Enter menu in one click.
  • Raw strings
    • C# 11 improves the ability to embed other languages or text formats into C# code by introducing the concept of "raw" strings.
    • ReSharper now has basic “raw” string support including compiler errors and correct parsing and color highlighting for """ syntax, pairs of double quotes, and placeholders inside interpolated strings ({{...}} syntax).
  • List patterns
    • C# 11 continues to expand the set patterns available in the language. This time around, C# allows matching through list-like structures, such as arrays, strings, and List<T>-like collections.
    • ReSharper now fully supports list patterns with error checking, code completion, and code analysis.
  • More C# 11 features
    • Added support for the new unsigned right shift operator (>>>), including support for user-defined operator >>> overloading.
    • Added support for simplifying the use of Span<char> values as a replacement for string instances, since in C# 11 it's possible to directly pattern-match string constants against the values of type Span<char> and ReadOnlySpan<char>.

Solution-wide analysis optimizations

  • Optimized the memory usage of ReSharper with the Solution-Wide Analysis mode turned ON, both in terms of memory traffic (number of memory allocations) and in terms of memory consumption.
    • The data stored in memory has been reviewed and patterns were found that allowed for the data to be deduplicated/normalized.
    • Now utilizes specialized collection types to further reduce the working set.
    • These optimizations result in a 5-10x memory consumption improvement and faster Solution-Wide Analysis loading.

Code Analysis

  • Top-level statements
    • Microsoft .NET 6 introduced new project templates with the use of C# 9 top-level statements. Top-level statements simplify declaring a Program class or public static void Main(string[] args) method. But sometimes the explicit startup class Program is necessary or more desirable to use. This release adds the new context action To explicit 'Program' class to execute a transformation to the old style.
    • At the same time, if you have an existing Program startup class and wish to migrate to top-level statements, you can use the new Convert to top-level code context action.
  • Updates to the INotifyPropertyChanged support
    • Reworked the INotifyPropertyChanged support. It no longer relies on external annotations to detect common INotifyPropertyChanged APIs, which means support for more MVVM frameworks and INotifyPropertyChanged base classes could be added automatically. ReSharper now emits a SetField method that enables the most concise syntax for INotifyPropertyChanged notifications.
    • It's also now possible to add property change notifications for all of the properties in the type or file.
  • Refactorings in the Alt+Enter menu
    • To increase the discoverability of refactorings, the most commonly used refactorings were reviewed and related context actions have been introduced in the Alt+Enter menu that depend on the current context.
    • Added the Extract method context action when you call the Alt+Enter menu on a selected piece of code.
    • Change Signature, Transform Parameters, Convert to extension method, and Convert Property To Method refactorings are all now available as context actions over member signatures.
  • More suggestions for using a nameof operator
    • ReSharper now recognizes the registrations of DependencyProperty in WPF projects and suggests using a nameof operator to capture the corresponding CLR property name. Built-in live templates have also been updated to emit nameof instead of string literals.
    • Often ReSharper can’t recognize the special meaning of a particular string literal in your code that is used to specify the name of some code entity like a member or type name. For these cases, a new Capture element name context action has been introduced for string literals with identifiers that can reference a code entity in the context containing the string literal.
  • Structural Search and Replace
    • Quick-fixes which come from Structural Search And Replace (SSR) patterns can now be applied in the scope of a file, folder, project, or entire solution. It affects user custom patterns, ReSharper built-in code inspections, and the corresponding fixes based on the SSR.
  • Other
    • ReSharper now detects some assignment patterns in your code and suggests more idiomatic C# code with pattern matching.
    • ReSharper is now able to replace some is patterns under ?: expressions with the more concise as under the ?? expression, effectively eliminating a temporary variable.

Virtual Formatting

  • Added the Virtual Formatter which allows you to view code with your desired formatting without actually reformatting the source code on the disk.

Disk Cleanup

  • You can now remove temporary files generated by ReSharper while it is working on your code. A new page has been added in Options where you can:
    • Observe a set of default paths and files ReSharper can remove.
    • Add a custom path template for files you want to be removed.
    • Specify after how many days ReSharper should consider files outdated for each path template.
    • Check how much space is occupied by files matched by each path template.
    • Set up automatic cleanup for outdated files which will run periodically (the default value is 1 day).
    • Run the cleanup manually for different scopes.

JavaScript and TypeScript support

  • JavaScript and TypeScript support has now been disabled by default in this release. If you still want to use it, you can re-enable it here: ReSharper | Options | Environment | Products & Features | the "JavaScript and TypeScript" checkbox.

Unreal Engine

  • ReSharper C++ introduces Blueprint-specific inlay hints and allows you to see the bigger picture behind your code:
    • Be aware of derived Blueprint classes and check out the list of all inheritors.
    • Spot that a UFunction has implementations in Blueprints and search for all such cases.
    • Quickly check the state of a UProperty, including whether it has been overridden and what value is set in the Blueprint file.
    • Inspections have also been added to let you know if there are inconsistencies between the Blueprint-specific function specifiers used in the code and the Blueprints themselves.

Native system calls

  • Improved support for native system calls [dotUltimate] - dotTrace now provides more details for native system calls in the Timeline Call Tree, including Windows kernel calls (ntoskrnl.exe), device driver calls (*.sys), and more.

Respect settings from StyleCop.Analyzers

  • ReSharper can now detect if the StyleCop.Analyzers package is referenced by a project and read its settings from the stylecop.json and .ruleset files. File headers and indentation settings are lifted from stylecop.json, while StyleCop rules are applied in accordance with the active .ruleset file setup.

ReadyToRun and NGen assemblies

  • The way ReadyToRun (R2R) and NGen assemblies are presented in the Assembly Explorer has been improved. A small processor-looking icon, as well as NGen or R2R labels, are now displayed next to each assembly's name.
  • The Metadata tree has the ReadyToRun header.

ReSharper C++

Unreal Engine

  • Added Blueprint-specific inlay hints and allows you to see the bigger picture behind your code:
    • Be aware of derived Blueprint classes and check out the list of all inheritors.
    • Spot that a UFunction has implementations in Blueprints and search for all such cases.
    • Quickly check the state of a UProperty, including whether it has been overridden and what value is set in the Blueprint file.
  • Added two new inspections to let you know if there are inconsistencies between the Blueprint-specific function specifiers used in the code and the Blueprints themselves:
    • A UFunction with the BlueprintCallable function specifier is supposed to be used in a Blueprint, but no usages are found.
    • A UFunction with the BlueprintImplementableEvent function specifier is supposed to be implemented in a Blueprint, but no implementations are found.
  • Improved the indexing speed of Unreal Engine projects. As a result of caching of precompiled headers, ReSharper C++ now indexes your code base up to twice as fast as before. This experimental performance boost is currently available for Microsoft Visual Studio 2022 only.
  • Added support for Spec tests from the Unreal Engine automation testing framework. If you have a set of tests defined in the Define method after the DEFINE_SPEC macro or the BEGIN_DEFINE_SPEC/END_DEFINE_SPEC macros, ReSharper C++ will successfully discover them. In the Unit Test Sessions window, you can review the results of the tests and rerun failed tests, all tests, or specific tests.
  • The code completion list now includes Widgets metadata specifiers.
  • ReSharper C++ now properly handles Unreal Engine containers in Emplace calls, bringing improved search and navigation features, parameter name hints, and warnings about invalid arguments.

C++ support

  • Improved the readability of error tooltips by adding syntax highlighting. The error highlighting range has also become more precise.
  • Parameter name hints now support make- and emplace-like function calls.
  • Updated the bundled Clang-Tidy binary to Clang 14, adding new checks from the latest LLVM release.
  • Updated Boost tests.
  • Added support for the Public Include Directories and All Header Files are Public project properties.

dotCover

  • Quick view of coverage results in JetBrains Rider - You can now quickly view coverage results for the file you have open using the shield icon. Clicking on the icon navigates you through the uncovered statements.

dotMemory

  • dotMemory in JetBrains Rider - dotMemory is now available right in JetBrains Rider:
    • Two new profiling modes are now available in the Run widget and Run | Switch profiler configurations in the main menu – Memory (sampled allocations) and Memory (full allocations).
    • You can attach the profiler to a running process from the Run menu.
    • Watch the Timeline Graph unfold in real-time by selecting an interval and opening the Memory Allocation view. It is equivalent to the same view in dotMemory Standalone and allows you to dig deeper into the analysis of a specific time frame.
    • The dotMemory plugin doesn’t allow collecting snapshots and only works on Microsoft Windows in the 2022.2 release.

dotPeek

  • High-level and low-level C# code in IL Viewer - Added an option to view decompiled high-level and low-level C# code in the IL Viewer tool window. The decompiled code is still synced to the source code in the code editor.
  • ReadyToRun and NGen assemblies in Assembly Explorer - The way ReadyToRun (R2R) and NGen assemblies are presented in the Assembly Explorer has been improved. A small processor symbol icon and ngen or R2R labels are now displayed next to each assembly's name.
    • The Metadata tree has the ReadyToRun header.
    • The Properties window has the ReadyToRun section.

dotTrace

  • Improved support for native system calls - dotTrace now provides more details for native system calls in the Timeline Call Tree, including Microsoft Windows kernel calls (ntoskrnl.exe), device driver calls (*.sys), and more.
  • Improvements to dotTrace in JetBrains Rider - You no longer have to restart the Unity Editor to launch the profiling process. The profiler can now attach to and detach from running Unity processes.