{"id":511537,"date":"2024-09-20T05:58:26","date_gmt":"2024-09-20T04:58:26","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=dotnet&#038;p=511537"},"modified":"2024-10-15T19:34:22","modified_gmt":"2024-10-15T18:34:22","slug":"resharper-2024-3-eap","status":"publish","type":"dotnet","link":"https:\/\/blog.jetbrains.com\/en\/dotnet\/2024\/09\/20\/resharper-2024-3-eap","title":{"rendered":"ReSharper 2024.3 Starts its Early Access Program!\u00a0"},"content":{"rendered":"\n<p>Say hello to the first build of ReSharper 2024.3 Early Access Program! This build is mostly about improving C++ support, but it still has something new for C# developers as well. Let\u2019s have a look!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ReSharper&nbsp;<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Code Cleanup<\/h3>\n\n\n\n<p>Now you can substitute a default Code Cleanup profile with another one for particular files via <code>.editorconfig<\/code> files as well as specify files you want to omit from code cleanup. (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-493872\" target=\"_blank\" rel=\"noopener\">RSRP-493872<\/a>).<\/p>\n\n\n                        <div class=\"rider-code-highlight rider-code-highlight__light\">\n                <pre>[fullToReformat.cs]\r\nresharper_substitution_for_cleanup_profile.icanwriteanythinghere=Built-in: Full Cleanup => Built-in: Reformat Code\r\n\r\n[anyToReformat.cs]\r\nresharper_substitution_for_cleanup_profile=* => Built-in: Reformat Code\r\n\r\n[fullToSkip.cs]\r\nresharper_substitution_for_cleanup_profile=Built-in: Full Cleanup => skip\r\n\r\n[anyToSkip.cs]\r\nresharper_substitution_for_cleanup_profile=* => Skip<\/pre>\n                <div class=\"rider-code-highlight-btn-copy\"><div class=\"rider-code-highlight-tooltip\">Copy to clipboard<\/div><\/div>\n            <\/div>\n            \n\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Naming Styles&nbsp;<\/h3>\n\n\n\n<p>We&#8217;ve added a couple of new options to adjust naming rules more precisely.&nbsp;<\/p>\n\n\n\n<ul>\n<li>Local functions now have <em>Local functions with &#8216;async&#8217;<\/em> and <em>Task-returning local functions (not &#8216;async&#8217;) <\/em>options to choose from (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-493613\" target=\"_blank\" rel=\"noopener\">RSRP-493613<\/a>).&nbsp;<\/li>\n\n\n\n<li>Methods got a new <em>Task-returning method (not &#8216;async&#8217;) <\/em>option to support methods with an <code>Async<\/code> suffix in the name that aren&#8217;t marked with an <code>async<\/code> modifier but return a <code>Task<\/code>-like type (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-482529\" target=\"_blank\" rel=\"noopener\">RSRP-482529<\/a>). This is helpful when you declare a method in an interface where you aren\u2019t allowed to use an <code>async<\/code> modifier, but which will return a <code>Task<\/code> type in implementation.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1526\" height=\"1090\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/image-26.png\" alt=\"\" class=\"wp-image-512250\"\/><\/figure>\n\n\n\n<p>Another new option is <em>Warn about using prefixes and suffixes from this rule in unrelated identifiers<\/em> (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-485170\" target=\"_blank\" rel=\"noopener\">RSRP-485170<\/a>). In previous versions, if you specified an <code>Async<\/code> suffix in a <em>Methods<\/em> rule, and if no <em>Properties<\/em> rule had this as a suffix, ReSharper would complain about a property with an <code>Async<\/code> in the name. In other words, ReSharper prohibited you from using this suffix in entities other than methods. Starting from the 2024.3 EAP, you can disable this option in the <em>Methods<\/em> rule, and ReSharper stops complaining about property names with these kinds of suffixes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Formatting<\/h3>\n\n\n\n<p>There are new formatting options to give you even more flexibility:<\/p>\n\n\n\n<ul>\n<li>A new option to control wrapping around an equal <code>=<\/code> operator (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-491099\" target=\"_blank\" rel=\"noopener\">RSRP-491099<\/a>).<\/li>\n\n\n\n<li>A new option <em>Indent &#8216;break&#8217; from &#8216;case<\/em>&#8216; (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-478502\" target=\"_blank\" rel=\"noopener\">RSRP-478502<\/a>).<\/li>\n\n\n\n<li>A new option <em>Treat &#8216;case&#8217; statements with &#8216;break&#8217; as simple<\/em> (<a href=\"https:\/\/youtrack.jetbrains.com\/issue\/RSRP-469180\" target=\"_blank\" rel=\"noopener\">RSRP-469180<\/a>).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1574\" height=\"826\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/image-24.png\" alt=\"\" class=\"wp-image-512227\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">ReSharper C++<\/h2>\n\n\n\n<p>The first EAP build brings several notable updates to C++ support.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1600\" height=\"820\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2024\/09\/MoveToFolder.png\" alt=\"\" class=\"wp-image-511620\"\/><\/figure>\n\n\n\n<ul>\n<li>The <em>Move to Folder<\/em> refactoring now also handles C++ files.<\/li>\n\n\n\n<li>Support for literal suffix for <code>size_t<\/code> and attributes on lambda expressions from C++23, the C23 <code>typeof<\/code> and <code>typeof_unqual<\/code> operators, and the C++17 <code>std::has_unique_object_representations<\/code> type trait.<\/li>\n\n\n\n<li>A number of improvements for users of the C++20 ranges library.<\/li>\n\n\n\n<li>Support for <code>\/\/ clang-format off\/on<\/code> comments to disable or enable code formatting.<\/li>\n\n\n\n<li>Typing assist to automatically insert a space between control flow keywords and the opening parenthesis.<\/li>\n\n\n\n<li>Built-in live templates to generate <code>UE_LOG<\/code> and <code>UE_LOGFMT<\/code> logging statements.<\/li>\n\n\n\n<li>An option to use XML documentation instead of Doxygen.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>For more details on the ReSharper C++ updates, see&nbsp;<a href=\"https:\/\/blog.jetbrains.com\/rscpp\/2024\/09\/19\/blog.jetbrains.com\/rscpp\/2024\/09\/20\/resharper-cpp-2024-3-eap\/\">the dedicated blog post<\/a>.<\/p>\n\n\n    <div class=\"buttons\">\n        <div class=\"buttons__row\">\n                                                <a href=\"https:\/\/www.jetbrains.com\/resharper\/nextversion\/\" class=\"btn\" target=\"\" rel=\"noopener\">Download ReSharper 2024.3 EAP<\/a>\n                                                    <\/div>\n    <\/div>\n\n\n\n\n\n\n\n<p>That\u2019s it for today! You can find the full list of features and fixes on <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=Project:RSRP,RSCPP,dotTrace,dotMemory,dotCover,dotPeek%20Available%20in:%7B2024.3%20EAP%201%7D\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n","protected":false},"author":307,"featured_media":512166,"comment_status":"closed","ping_status":"closed","template":"","categories":[4992,826],"tags":[507,2015,2923,2057],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/511537"}],"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\/307"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/comments?post=511537"}],"version-history":[{"count":10,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/511537\/revisions"}],"predecessor-version":[{"id":518421,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/dotnet\/511537\/revisions\/518421"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media\/512166"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/media?parent=511537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/categories?post=511537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/tags?post=511537"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/en\/wp-json\/wp\/v2\/cross-post-tag?post=511537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}