ReSharper 2023.3

Released: Dec 6, 2023

Mises à jour de 2023.3

Fonctionnalités

AI Assistant is out of preview [General Availability]

  • JetBrains AI Assistant is now generally available with a number of new and improved features to increase your productivity. The latest set of improvements for ReSharper includes:
    • Context-aware AI chat.
    • Better project awareness for AI Actions.
    • AI-powered multiline code completion.
    • Unit test generation.
    • XML documentation generation.
    • Ability to create a library of custom prompts.
  • You can use AI Assistant in ReSharper as a supplemental feature with a JetBrains AI Service subscription.

C# support

  • With this release ReSharper extends the list of supported C# 12 features, namely primary constructors, alias directives to reference any kind of type, collection expressions, interceptors, and others.

Performance

  • ReSharper can now recognize and facilitate more scenarios where code analysis services can operate incrementally when interrupted by typing. This improvement is particularly beneficial for handling large files.
  • The latest update also puts you in control of the amount of resources to be allocated to solution-wide code analysis. You can now choose between Low, Moderate, and High modes of resource utilization.
  • The High mode is designed to not interfere with typing in the editor and does not degrade the IDE's responsiveness. It gradually starts increasing the CPU usage only when code analysis is being interrupted by the code typing, maintaining a smooth typing experience all while solution-wide analysis is processing the source code in the background.
  • Other performance enhancements
    • Finding usages of types and constructors is now faster for solutions with numerous target-typed object creations (e.g. SomeType _field = new() ). This improvement also positively affects refactoring speed.
    • Fixed some issues associated with handling injected languages, which used to cause increased CPU usage.

UX/UI

  • Reworked UX for the Extract local function refactoring - Revamped the user experience for the Extract local function refactoring. In the past, selecting a location for the new function from the list of available options was challenging, and it wasn't clear what would be affected by that choice.
    • With the updated UX, you'll now see a preview of the new function's signature directly in the code editor. This makes it easy to understand precisely where it will be inserted and how your choice will impact the introduced function. You can also see which variables will be transformed into parameters rather than closures and which other functions will be relocated to allow calls at the new location.
  • Reworked integration of ReSharper and Visual Studio Quick Actions - Microsoft Visual Studio and ReSharper's quick actions can complement each other well when used discerningly. With this release, you can easily leverage the power of both systems. You can now tweak the settings to either use ReSharper's quick actions exclusively, display suggestion icons for both, or invoke all quick actions from a single access point - ReSharper's bulb menu.
  • Mnemonics for Copy Code Reference - This release introduces access keys for the Copy Code Reference action. Each code reference type in the context menu can now be selected with a single keystroke.

C++ support

  • In ReSharper C++ 2023.3, working with inactive code has become much easier. Code completion in currently inactive code blocks inside conditional preprocessor branches now suggests symbols from the global scope. Find Usages also got an update and now shows possible usages in inactive code and macro bodies in the dedicated results sections.

Code formatting

  • New code formatting engine for Razor - This release introduces a new formatting engine for Razor. It's compatible with ReSharper's current C# formatter, thus supporting C# language constructs introduced in recent years and most of ReSharper's new formatting options for C#. The new formatter also operates faster and is expected to have fewer issues. However, it does modify the default formatting for some code. Therefore, an option to revert to the old formatting engine has been introduced for Razor. You can find it in ReSharper's Options under Code Editing | Razor | Code Style.

Entity Framework

  • Inspections targeting Entity Framework-related issues - This release brings new inspections for usages of methods in Entity Framework-related code that could potentially produce runtime exceptions. The two cases covered by these new inspections are:
    • Methods that produce exceptions when called on in a database context while not being convertible to SQL within Entity Framework or Entity Framework Core.
    • Methods that produce exceptions when called on outside of a database context while being exclusively implemented as database functions.
  • Entity Relationship Diagrams - This release introduces entity relationship diagrams (ERDs). ERDs in ReSharper provide a graphic representation of the database model, the relationships between entities, as well as database model analysis insights.
    • Entity Framework-specific analyses in ReSharper will now inspect your code for potential issues in the EF model, such as unlimited string property length and dependency loops. If you then invoke a context menu on such an inspection and select Show Entity Relationship Diagram, you'll be able to investigate the issue visually.

Unit testing

  • AI-powered generation of tests [Beta] - The previous release introduced the ability to easily create unit tests. This latest update to AI Assistant inside ReSharper gives you the option to generate the code inside unit tests, leveraging the power of LLMs.

Grammar and spelling checking

  • New code formatting engine for Razor - JetBrains Grazie has become ReSharper's new built-in grammar and spelling checker. Grazie supports over 20 languages and catches natural language errors within programming languages supported by ReSharper (C#, C++, VB.NET), markup languages (HTML, XML, XAML), and comments. To add other natural languages to Grazie, go to Options | Grammar and Spelling | General in ReSharper.

Qodana Community linter for .NET

  • For a long time, if you wanted to run ReSharper Code Analysis outside of an IDE on your CI/CD server, you only had one option – the InspectCode tool from ReSharper Command Line Tools. Recently, Qodana has made its first steps into our lineup of .NET tools and launched the Early Access Program for Qodana Community linter for .NET. Though Qodana is based on the same static code analysis engine as ReSharper, it offers several additional benefits: Users can inspect analysis results with a signature sunburst diagram in Qodana Cloud and quickly judge their project's overall health. Qodana shortens the feedback loop between an IDE and the CI workflow. Server-side analysis results are automatically delivered to JetBrains IDEs and Visual Studio Code. Use the baseline to manage technical debt. Additionally, paid Qodana linters for .NET will allow for running third-party license audits, analyzing code coverage, and detecting vulnerable dependencies. We will not discontinue the ReSharper Command Line Tools, but from now on, the Qodana Community linter for .NET will be the preferred way to run ReSharper analysis outside of the IDE.

dotMemory

  • dotMemory Standalone on Linux and macOS [dotUltimate] [Beta] - You can now run the standalone version of dotMemory on Linux and Apple macOS operating systems.

Decompiler

  • Assembly diff
    • The Assembly diff functionality introduced with the previous release is now able to compare NuGet packages, folders, and .zip files.
    • The ability to compare assemblies now has more comparison options. You can choose between several diff modes (Show all, Show only differences, Show only signature differences, Show only public API differences). Additionally, you can specify if you'd like the Diff to ignore member/attribute order differences, as well as differences in nullable reference types' annotations.
  • Assembly Explorer updates
    • When exploring NuGet packages in the Assembly Explorer, you'll now be able to see all files and folders inside those NuGet packages.
    • Win32 resource nodes, including their size and type (if these can be determined), can now be viewed in the node presentation tree and the Properties pane.
  • Other updates:
    • Introduced the ability to decode Win32 string-table resources.
    • ReSharper now displays the sizes of open files inside the Properties pane for an assembly/non-assembly, files inside bundles, archives, NuGet packages, and compared assemblies, as well as Win32 resources.
    • Assembly authenticode signature validation is now available.
    • Explicit #nullable disable directives are now shown in decompiled sources.

Miscellaneous

  • New inspections for applications targeting the Microsoft ASP.NET Core framework - Dynamic Program Analysis has received three new inspections for applications targeting the ASP.NET Core framework. These inspections are designed to alert you to potential backend performance issues that could make your application less responsive.
  • New inspections for identifying vulnerable API usages [Security] - This release brings a new security inspection feature designed to make published vulnerabilities more apparent and easier to understand.
    • The new inspections identify vulnerable NuGet packages in your project and highlight instances where vulnerable methods from these libraries are used in your code. If a vulnerability is detected, the system highlights the problematic code and offers quick actions to remedy it. These actions include recommending an update to a newer package version and offering in-depth information about the detected vulnerabilities.