{"id":404193,"date":"2023-11-08T19:13:51","date_gmt":"2023-11-08T18:13:51","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=404193"},"modified":"2025-09-17T13:32:02","modified_gmt":"2025-09-17T12:32:02","slug":"resharper-2023-3-eap-6","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/en\/dotnet\/2023\/11\/08\/resharper-2023-3-eap-6","title":{"rendered":"ReSharper 2023.3 EAP 6: Code Analysis Performance Improvements, Support for C# 12 Interceptors, and Much More.\u00a0"},"content":{"rendered":"\n<p>The latest installment in the ReSharper 2023.3 Early Access Program has just been released, and it\u2019s packed with updates.&nbsp;<\/p>\n\n\n\n<p>Before you download it, let\u2019s take a look at the changes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"2560\" height=\"1440\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/09\/Blog_Featured_image_1280x720_ReSharper-2x.png\" alt=\"\" class=\"wp-image-390855\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Code analysis performance improvements<\/h2>\n\n\n\n<p>ReSharper 2023.3 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 incremental approach ensures that only the necessary portions of the code are re-inspected when developers are still editing a file while the code analysis is ongoing. This speeds up continuous code analysis and conserves battery life on laptops.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reworked UX for the <em>Extract local functions<\/em> refactoring<\/h2>\n\n\n\n<p>We&#8217;ve revamped the user experience for the <em>Extract local function<\/em> refactoring. In the past, selecting a location for the new function from the list of available options was challenging, and it wasn&#8217;t clear what would be affected by that choice.<\/p>\n\n\n\n<p>With the updated UX, you&#8217;ll now see a preview of the new function&#8217;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.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/Nnwwnlxp0D6rJ20GhszjXh7Mxkm9r0ihbjC8jIuSiqB9eOHgcM0FJcRq_DfiNn64WjdPK7VkLggjQ_zmw93VFinSAWM1mfDSIjaQy3hQA3CWNy9EU2JE0qk1b_EJSe3BZc2FglnsJTuNugKl9xYVDE4.gif\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Support for C# 12 interceptors<\/h2>\n\n\n\n<p>The latest version of C# has introduced an experimental feature called <a href=\"https:\/\/github.com\/dotnet\/roslyn\/blob\/main\/docs\/features\/interceptors.md\" target=\"_blank\" rel=\"noopener\">interceptors<\/a>. This feature leverages the new [InterceptsLocation] attribute, which enables you to intercept and redirect specific method calls within your application to an interceptor instead of the original method. This can be used for optimization, as you\u2019ll be able to fine-tune the interceptor method along with its exact arguments for a particular call site at compile time.&nbsp;<\/p>\n\n\n\n<p>However, some source generators may override certain calls in your program and replace them with their own code.<\/p>\n\n\n\n<p>ReSharper 2023.3 will alert you to an intercepted call with an inlay hint icon, which can take you to the interceptor with a single <kbd>Ctrl<\/kbd>+<kbd>Click<\/kbd>. It&#8217;s also now possible to navigate back from the <code>[InterceptsLocation]<\/code> attribute to the exact code position it intercepts. The same navigation actions are also available from the <kbd>Alt<\/kbd>+<kbd>Enter<\/kbd> menu.<\/p>\n\n\n\n<p>You might want to exclude certain generators from adding visual noise to the editor. For instance, you may not be interested in the latest ASP.NET Core <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/asp-net-core-updates-in-dotnet-8-preview-7\/#native-aot\" target=\"_blank\" rel=\"noopener\">being able to generate interceptors to optimize your .MapGet calls<\/a>. To prevent calls intercepted by a particular framework from being displayed, you can add the fully qualified name of the generator responsible for producing interceptor methods to the exclusion list in ReSharper\u2019s settings. Alternatively, you can also do so with <kbd>Alt<\/kbd>+<kbd>Enter<\/kbd> and context menus available directly from the inlay hint indicating the intercepted call. This means you don&#8217;t need to type the full name of the generator, or even know it beforehand to configure this behavior.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reworked integration of ReSharper and Visual Studio Quick Actions<\/h2>\n\n\n\n<p>Visual Studio and ReSharper\u2019s quick actions can complement each-other well when used discerningly. With ReSharper 2023.3 you can easily leverage the power of both systems. You can now tweak the settings to either use ReSharper\u2019s quick actions exclusively, display suggestion icons for both, or invoke all quick actions from a single access point \u2013 the ReSharper bulb menu.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1538\" height=\"1189\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/image-9.png\" alt=\"\" class=\"wp-image-404205\"\/><\/figure>\n\n\n\n<p>We\u2019ve also optimized Visual Studio\u2019s Quick Actions retrieval, improving the performance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New code formatting engine for Razor<\/h2>\n\n\n\n<p>ReSharper 2023.3 introduces a new formatting engine for Razor. It\u2019s compatible with the current ReSharper&#8217;s C# formatter, thus supporting C# language constructs introduced in recent years and most of ReSharper&#8217;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, we have introduced an option to revert to the old formatting engine for Razor. You can find it in ReSharper\u2019s Options under <em>Code Editing | Razor | <\/em>Code Style.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1538\" height=\"815\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/11\/image-10.png\" alt=\"\" class=\"wp-image-405001\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Improved support for projects that use StyleCop.Analyzers code style inspections<\/h2>\n\n\n\n<p><code>StyleCop.Analyzers<\/code> configuration files are now detected automatically in the projects where they are enabled, and StyleCop-related defaults are now provided even when no config files are present.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">File header templating overhaul<\/h2>\n\n\n\n<p>Arbitrary file header variables can now be configured in the <a href=\"https:\/\/www.jetbrains.com\/help\/resharper\/File_Header_Style.html#configure-file-header-in-settings\" target=\"_blank\" rel=\"noopener\">file header settings page<\/a>. Also, there is now support for the StyleCop.Analyzers external file header templating. The <em>Update file header<\/em> <a href=\"https:\/\/www.jetbrains.com\/help\/resharper\/File_Header_Style.html#insert-file-header-into-existing-files-with-code-cleanup\" target=\"_blank\" rel=\"noopener\">cleanup stage<\/a> should now correctly use it when the StyleCop.Analyzers are configured for the project that the cleaned up file belongs to.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0421++ updates<\/h2>\n\n\n\n<p>The EAP 6 build brings updates for HLSL support, code completion inside inactive preprocessor branches, a new inlay hint for forwarding references, and other updates.&nbsp;<\/p>\n\n\n\n<p>For more information, please check out<a href=\"https:\/\/blog.jetbrains.com\/rscpp\/2023\/11\/06\/resharper-cpp-2023-3-eap-hlsl-updates\/\"> this <\/a><a href=\"https:\/\/blog.jetbrains.com\/rscpp\/2023\/11\/08\/resharper-cpp-2023-3-eap-hlsl-updates\/\">dedicated<\/a><a href=\"https:\/\/blog.jetbrains.com\/rscpp\/2023\/11\/06\/resharper-cpp-2023-3-eap-hlsl-updates\/\"> blog post<\/a>.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New inspections for identifying vulnerable API usages<\/h2>\n\n\n\n<p>ReSharper 2023.3 brings a new security inspection feature designed to make published vulnerabilities more apparent and easier to understand.<\/p>\n\n\n\n<p>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 version of the package and offering in-depth information about the detected vulnerabilities.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2025\/09\/nIJzoxcXbnZpii5rE0wSNdQL_E4X_atGOKdQJzbcEANQrv9fKcyFiKhtwGx-HLNMfS4BQPioqq8qCC1S_K90AI-YS3Ma84TtGS4N_snTwFq6-lpCduDf826F5U6iwrFI6oASNS5xOQJ5MDA2dIMIobU.png\" alt=\"\"\/><\/figure>\n\n\n\n<p>That\u2019s it for now! For the full list of changes included in this build, please go to <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/RSRP?q=Available%20in:%20%7B2023.3%20EAP%206%7D%20\" target=\"_blank\" rel=\"noopener\">our issue tracker<\/a>.&nbsp;<\/p>\n\n\n\n<p>As always, we\u2019d be happy to hear from you. Tell us what you think about the latest changes in the comments section below or<a href=\"https:\/\/twitter.com\/resharper\" target=\"_blank\" rel=\"noopener\"> on X<\/a> (formerly Twitter).&nbsp;<\/p>\n","protected":false},"author":1337,"featured_media":390855,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,826,89,907],"tags":[8126,600,2017,46,2042],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/404193"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/types\/dotnet"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/users\/1337"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=404193"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/404193\/revisions"}],"predecessor-version":[{"id":622823,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/404193\/revisions\/622823"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/390855"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=404193"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=404193"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=404193"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=404193"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}