ReSharper 2019.3 Help

What's New in ReSharper

ReSharper/ReSharper C++ 2019.3

  • Improved C# 8 support including: notnull constraint, the target-typed switch expressions, early support for default interface methods, a new hint "Local function can be static", and a new quick-fix "Add missing arms".

  • Localization manager

  • Type name hints for lambda’s parameters, vars including pattern matching and tuples deconstruction, range variables inside LINQ statements, and at the end of a line in a method call chain. Hints for missing returns in functions and missing breaks in switch statements

  • Xamarin support fixes: x:DataType and Class attributes support.

  • Generate type patterns in switch expressions

  • Options to use System.HashCode to implement GetHashCode and to take nullability into account when generating equality members or equality comparer.

  • Parameter information supports tuples.

  • Reading and exporting C# naming settings from/to EditorConfig.

  • Find dependent code now works for NuGet references and can be run for the whole solution. Also there are new filters for dependent code in find results.

  • Navigate To Consuming APIs
  • Decompilation of tuples, deconstruction, discards

  • Navigation to external sources of NuGet packages using symbol packages (.snupkg).

  • New code inspections and quick-fixes. Among other things, for NUnit tests. 'Type or member is never used' is split into two separate inspections — for types and for members.

  • New grouping and filtering options in the Unit Test Explorer window and Unit Test Sessions window.

  • More colors for different kinds of identifiers in syntax highlighting

  • More detailed configuration for code style of using 'var' vs explicit type.

  • ReSharper Command Line Tools can run on Linux and macOS.

  • New features for ReSharper C++ 2019.3:

    • C++20: Initial support for C++20 concepts, ADL and Function Templates that are not Visible, initializing aggregates from a parenthesized list of values

    • Clang-tidy integration improvements:

      • The bundled clang-tidy binary is updated to version 9 with a number of new checks. Additionally, it should no longer prevent modifications to source files.

      • Clang warnings can now be disabled from the inspection menu.

      • A new setting to use a specific clang-tidy configuration file (instead of a setting which specified the configuration as a string)

    • Formatter improvements: export of formatting options to a .clang-format file, options for spaces before ptr and ref in abstract declarations.

    • Thanks to some improvements in the code highlighting engine, re-highlighting now happens faster (after a function’s body is changed, only the body itself will be reanalyzed).

    • New quick-fixes that help adding a variable to the lambda capture list.

    • Unreal Engine 4 support improvements:

      • UE smart pointers (TSharedPtr, TSharedRef, TWeakPtr, TUniquePtr) are supported similarly to std::shared_ptr/unique_ptr (for example, they are supported by the Parameter Info, code analysis, and postfix completion).

      • The new postfix template for UCLASS expands to a proper factory function call.

      • New USTRUCT/UCLASS/UENUM/UENUMCLASS live templates are available.

      • No more Visual Studio hang after executing the "Refresh Visual Studio Project" action in the Unreal Engine 4 editor.

    • Several live templates were renamed to match the corresponding keywords (for example, cls to class, str to struct).

    • A couple of updates in Go to file member: The dialog is now displayed instantly instead of waiting for a file to be fully analyzed, if a file contains both the declaration and the definition of a function, the function is shown only once in the dialog.

    • It’s now possible to navigate to the aggregate class from the opening brace of a brace-enclosed initializer list.

    • New setting to find the clang-tidy executable to use in %PATH%.

    • Inlay hints improvements: Type name hints for auto variables, structured bindings, function and lambda return types. Type name hints are disabled by default in dependent code.

    • Sort #include directives (quick-fix and context action).

ReSharper/ReSharper C++ 2019.2

  • Improved C# 8 support including: the latest changes in indexes and ranges such as indexable and rangeable types, unmanaged generic structs.

  • Go to File Member now also searches for textual matches in the current document.

  • Ability to filter out occurrences in comments in the search results of Go to Text.

  • Ability to exclude symbols from import namespace suggestions and import symbol completion.

  • Solution model is read directly from project/solution files.

  • Usages search works faster by using the indexes of the solution-wide analysis.

  • Tooltips with keyword description in IL Viewer

  • Win32 resources subtree in Assembly Explorer window

  • New features for ReSharper C++ 2019.2:

    • Improved editor hints. There are two new types of hints: hints after preprocessor directives and hints for function arguments passed by a non-const reference. Hints in aggregate initialization expressions now show the names of initialized base classes.

    • More C++ 20 features are supported: conditional explicit, char8_t, pack expansion in lambda init-capture, default constructible and assignable stateless lambdas, C++20 rules for aggregates, consteval and constinit specifiers, C++20 improvements to structured binding declarations.

    • The summary tooltip in code completion is now syntax-colored and shows documentation for the selected item.

    • Improved Unreal Engine 4 support:

      • The Rename and Change Signature refactorings handle UE4 RPC functions properly.

      • Unreal Engine specific code analysis checks especially targeting the missing or incorrectly set UE4 reflection macros

      • Built-in documentation for reflection specifiers is now available in the Quick Documentation popup.

ReSharper/ReSharper C++ 2019.1

  • Visual Studio 2019 support.

  • C# 8 support including: Ranges and index from end expressions, Null-coalescing assignment, Switch expressions, Tuple expression in switch statement, Static local functions, Initial support of using var declarations, Nullable reference types (parsing only), Async streams, Async disposables

  • Go to Text now searches in all text files in the solution.

  • Optimize references now works with SDK projects

  • Extract Method refactoring supports renaming of introduced parameters in the UI.

  • Improvements in inlay hints: Hints for attribute usages, special Hints for StringFormatMethod calls (disabled by default), more flexible configuration, auto-hide on column selection, a keyboard shortcut Ctrl+Shift+Alt+5 to show/hide the hints.

  • New features for code annotations and nullability analysis: Typing assist inserts ItemNotNull/ ItemCanBeNull attributes when the caret is within an argument of a generic collection type, Lazy<T>, or Task<T>, Typing assist supports C# 8 nullable reference types allowing to insert or remove the nullable mark ?, Code annotations hints on method declarations.

  • Faster navigation and search: "Instant" types search Faster "Search everywhere" and "Go to type"

  • Formatting and code cleanup improvements: formatting inspections for indenting around child statements are turned on by default, detecting formatting settings now works in background, export settings to EditorConfig, an option to turn off placing System.* and Windows.* namespaces first when rearranging namespace imports, which is now compatible with Visual Studio and StyleCop

  • Typing assist for unindent on Backspace, which returns the caret either by a multiple of the current indent size, or directly to the expected indent position in the code structure.

  • New features for ReSharper C++ 2019.2:

    • Performance improvements: Faster indexing, Smaller memory footprint, Less memory traffic during indexing and code analysis, Faster solution open from cache in large solutions.

    • New language features: C++20 familiar template syntax for generic lambdas, C++17 hexadecimal floating point literals, Alternative operator representations, Basic support for C++20 contracts, and three-way comparison operator.

    • New entity kinds are available when configuring naming rules.

    • Unreal Engine 4 support:

      • Initial indexing with default settings is 6x faster than 2018.3, 2x less managed memory used after indexing, 3x less live objects,

      • Awareness of RPC functions: navigation between them, generating implementation and typing completion,

      • UE4 options page with settings that allow turning off indexing of engine code/third-party code/plugins,

      • Initial support of naming convention defined by Unreal Engine's coding standard,

      • Clang-Tidy Integration is disabled by default for Unreal Engine 4 solutions.

    • New features for unit testing: Support for the doctest unit testing framework, Support for Catch 2.7 (TEMPLATE_PRODUCT_TEST_CASE test declarations) Support for GTEST_SKIP() in Google Test, Environment variable names wrapped with % get expanded in user-provided environment string

    • Improvements in formatting settings: support K&R style declarations in C, separate formatting options for spaces around references and pointers, macro calls get formatted similar to function calls.

    • Highlighting of identifiers in external files.

    • Improvements in navigation and search: Chained 'Go to' searches are several times faster now, Include base members option in Go to file member is supported, "Go to file member", base and derived class searches now work during indexing

    • More features for documentation comments: Parameter names get renamed in XML documentation comments, Typing assist automatically inserts /// on a new line

    • Clang-tidy integration improved: Separate clang-tidy options page (Code Editing | C++ | Clang-Tidy), Setting to harness a user-provided clang-tidy binary

ReSharper/ReSharper C++ 2018.3

  • New features for C# 7: code inspections, quick-fixes, and context actions for tuples, deconstruction, and more.

  • VB.NET 15.3 and 15.5 features support: named tuple inference, leading hex/binary/octal separator, non-trailing named arguments

  • Inlay hints
  • Use c# naming rules from existing code
  • Use formatting rules from existing code
  • Introduce Parameter refactoring now also works for local functions.

  • External Annotations can be stored under VCS, in the ExternalAnnotations folder next to a solution or a project file.

  • Ability to open options pages with Go to Action Ctrl+Shift+A

  • Configuration options for the usage-aware behavior of Go to Declaration.

  • Integrated decompiler improvements: local functions decompilation; Pattern matching decompilation: const pattern, type pattern, type patterns in the case clauses (predicates and discards are supported)

  • Localization Assistance support in ASP.NET Core apps.

  • New code inspections, quick-fixes, and context actions for NUnit and xUnit.net tests.

  • Multi-threading mode for the InspectCode Command-Line Tool command-line tool.

  • TypeScript 3.0 syntax support: unknown type (parsing only), optional elements in tuple types, rest elements in tuple types, rest parameters with tuple types, spread expressions with tuple types (without resolve), generic rest parameters

  • New features for ReSharper C++ 2018.3:

    • Automatic detection of formatting settings for C++ code

    • Predefined naming style schemes (STL, Google, LLVM, CamelCase, Microsoft)

    • Performance improvements: improved memory traffic during indexing, multithreaded cache load

    • Navigation improvements: Go to Declaration works more precisely on non-dependent decltype specifiers and lambdas, and you can even use it during the initial indexing

    • Refactorings improvements: Change Signature refactoring gets options to make a function constexpr/const/noexcept and change the ref-qualifiers.

    • Code analysis improvements: error diagnostics in the templated code is improved significantly, providing extra information on failed enable_if conditions, ill-formed expressions inside decltype, and absent inner types.

    • New context actions to generate a function that will convert an enum to a string, convert a regular return type in a function declaration into a trailing return type and vice versa, and also insert template arguments deduced using class template argument deduction.

    • Code generation improvements: Generate Getters/Setters can create C++/CLI properties, Generate Overriding Members can override CLR properties

    • For Unreal Engine projects: postponed background indexing of the engine itself to improve the initial indexing performance and better handling of the reflection macros

    • Unit testing support for Catch 2.5

    • New supported type traits in C++11 std::has_virtual_destructor and in C++/CLI (__is_interface_class, __is_ref_array, __is_ref_class, __is_value_class, __is_sealed, __is_delegate, __has_finalizer)

    • C++20 nested inline namespaces support

    • Improved C++/CLI suppor

ReSharper/ReSharper C++ 2018.2

ReSharper/ReSharper C++ 2018.1

  • Full support of C#7.2, including features missing in previous releases: non-trailing named-arguments, private protected access modifier, leading underscores in numeric literals, in parameter, ref readonly returns and locals, readonly struct type, ref struct type, conditional ref operator.

  • A new way to detect unused non-public members without the solution-wide analysis — the Show unused non-private type members when solution-wide analysis is off option on the Code Inspection | Settings page of ReSharper options (Alt+R,,O)

  • Code cleanup can be now executed with the free CleanupCode command-line tool.

  • Value Tracking supports some new C# features: ref-returning methods, pattern matching, and out variables.

  • A new filter for unit tests /u in search everywhere Ctrl+N (the most powerful ReSharper's search action, previously referred to as Go to Everything).

  • Configurable 'var' styles and new code inspections, quick-fixes, and context actions for deconstructing declarations and discards.

  • EditorConfig properties for code syntax styles and code inspection severity levels.

  • Code inspections features for code formatting styles.

  • Initial StyleCop support.

  • Typing assistance improvements: If you press Enter in the middle of a line comment, ReSharper will automatically add two slashes // in front of the text on the new line to avoid getting a non-compilable text.

  • Support for NUnit 3.10.1

  • New features for ReSharper C++ 2018.1 (an extended version is also available in a dedicated blog post):

ReSharper/ReSharper C++ 2017.3

ReSharper/ReSharper C++ 2017.2

ReSharper/ReSharper C++ 2017.1

ReSharper/ReSharper C++ 2016.3

  • Support of Visual Studio 2017 RC, including the new .csproj based .NET Core projects.

  • Massive improvements in language injections: JavaScript, CSS, and JSON are supported, ability to inject languages with a comment /*language=javascript|html|regexp|jsregexp|json|css*/, ability to disable automatic language injections in specific cases.

  • A new Transform Parameters refactoring, which combines and replaces two other refactorings 'Transform Out Parameters' and 'Extract Class from Parameters'.

  • No more separate setting pages for context actions in specific languages as all of them can be now enabled or disabled on the Code Editing | Context Actions page of ReSharper options.

  • Redesigned inspections severity options page (Code Inspection | Inspection Severity).

  • New options page (Code Editing | Third-Party Code), which allows adding C++, JavaScript, TypeScript, CSS, HTML and JSON files, folders and wildcards to be treated either as 'skipped' or 'library'. ReSharper will completely ignore 'skipped' files, and treat 'library' files as read-only — indexed for navigation, but no inspections, quick-fixes and refactorings.

  • The Usages of Symbol action lets you switch from the popup to the Find Results window before the usage search is over.

  • The Find Results window works asynchronously, meaning that you can work with the results tree while a search is in progress.

  • Recent Files and Recent Edits pop-ups now show the path of the file, Recent Edits can also show all edits in the same method as a single entry.

  • New formats of content files (.less, .hbs, .coffee, .scss, .dart, .as, .styl) supported in Go to Text.

  • A setting to remember the last search in Search Everywhere/Go to Type, Go To File, and Go to Text actions (this behavior is turned off by default).

  • Assembly Explorer window adds a new way to load assemblies – directly from nuget.org or from any NuGet package source.

  • New code generation actions: relational members, relational comparer, dispose pattern, plus a new option to check parameters for null in generate constructor.

  • New quick-fixes and context actions: e.g. a new quick-fix to introduce fields and auto-properties for all unused parameters; a new context action on fields of type Lazy<T> will introduce a property to encapsulate fieldname.Value.

  • A new typing assist for interpolated strings: type $ and ReSharper will automatically complete the $"" and insert the text caret between the quotes.

  • Join Lines command that quickly appends the next line after the current one.

  • ReSharper build improvements: the results of a build are now displayed in their own Build Results window, plain text logging to the Output window and/or to a file, an option to automatically run build after the solution is loaded, and proprietary NuGet package restorer that works with all supported Visual Studio versions.

  • External stack traces can open automatically in the Stack Trace Explorer window.

  • Initial support for C# 7.0 and VB.NET 15 features: binary literals, digit separators, out variables, local functions, and more.

  • Dynamic completion of package names in project configuration files (project.json, package.json, and bower.json).

  • Unit testing assistance is now available for for NUnit and xUnit.net unit tests in ASP.NET Core and .NET Core projects.

  • Significant performance improvement xUnit.net tests.

  • Support of UWP RelativePanel control.

  • Formatter improvements: Indenting of nested for, foreach, while, lock statements without braces is now disabled by default, with options to restore the old behavior; new option for indenting type parameter constraints; fixes for bugs introduced in 2016.2 by the new indenting engine.

  • Reworked coloring of to-do items in the editor.

  • Improved TypeScript/JavaScript support including:
  • New features for ReSharper C++ 2016.3:

ReSharper/ReSharper C++ 2016.2

  • Support of ASP.NET Core 1.0 and .NET Core 1.0 projects.

  • Go to Text.

  • Structural Navigation.

  • Warnings in Solution-Wide Analysis.

  • New C# typing assistant features: dot/semicolon inside parentheses and auto-correction of prefix in verbatim string interpolation

  • Ability to mark references as used at runtime to exclude them from cleanup performed by the Optimize References and Remove Unused References features.

  • Rearrange code improvements. For example, it is now available in interpolated string inserts, and in expressions with 3 and more operands; greedy brace now works for opening brace, braces of types and namespace declarations.

  • Reworked surround templates: each non-file template can now be used for generating code, for surrounding code, or for both, which lets you reuse your custom surround templates as live templates and vice versa, reducing their total number.

  • Extract Members to Partial refactoring.

  • Move Type to Another File refactoring can be now applied to nested types.

  • Assembly dependency diagram.

  • Ability to suppress custom code inspections with comments: specify a 'suppression key' in the Edit Highlighting Pattern dialog, and then use comments like // ReSharper disable once [SuppressionKey].

  • Execution log in the Unit Test Sessions window that lets you separate problems related to test execution process from unit tests code.

  • HTML analysis inside string literals in .cs, .js, and .ts files, which is enabled with the context action or with a comment /*language=html*/ before the string literal.

  • Ability to enable regular expression assistance in string literals with a comment /*language=regexp*/ before the string literal.

  • JSON value helpers.

  • Support for the <inheritdoc/> tag in XML documentation comments.

  • C# formatter improvements: new options for indenting of parentheses and code inside them; for controlling spaces before and after ++ and -- operators as well as before and inside parenthesis of checked and default expressions.

  • IL Viewer improvements: when you set the caret on a code symbol or instruction, all usages of this item are highlighted; loops in your code can be distinguished by corresponding indents and comments.

  • Ability to explore assemblies from currently running processes.

  • Localization Inspections and quick-fixes as well as the Move to Resource refactoring now work for interpolated strings.

  • VB.NET: support for interpolated strings

  • CSS: support of custom properties and CSS variables.

  • Improved TypeScript/JavaScript support including:
    • Generative Completion in TypeScript (ctorf/ ctorp, overrides, lambdas).

    • Full support of TypeScript 2.0 features, including this for functions, control-flow aware type guards, path mappings, optional class members, the never type.

    • Generating implementations for abstract members declared in a parent class using the Generate action Alt+Insert or a quick-fix.

    • Go to Declaration and Find Usages work correctly when dealing with type aliases.

  • New features for ReSharper C++ 2016.2 (an extended version is also available in a dedicated blog post):
    • C++14 language features: variable templates and decltype(auto).

    • Warnings about usages of classes and functions marked with the [[deprecated]]/__declspec(deprecated) attribute.

    • Support of the [[noreturn]]/__declspec(noreturn) attribute in control flow analysis.

    • New code style preferences for include directives in generated code.

    • Inline Variable refactoring now works in C++.

    • Important optimization of code analysis. For example, this optimization makes indexing (first opening) of the Unreal engine project several times faster.

    • Automatic Completion in C++ now also suggests symbols that are not included in the current file.

    • New code inspections and quick-fixes: 'Missing include guards' in your header files with the 'Add #pragma once directive' fix; 'Non-explicit conversion operator'; inspection and a fix to add a missing default case to a switch statement.

    • The Document context action that allows you to quickly add documentation comments to types and symbols.

    • When your caret is on one of a function’s exits (return, throw, etc.) ReSharper will automatically highlight all other function exits including exits from loops and switch statements.

    • A code style preference for using 0|nullptr|NULL in default pointer initializers.

    • New formatter options: single-line functions and lambdas, Blank lines around single line function definitions, Break line before member initializer list, Space between closing angle brackets in template arguments (for conformance with pre-C++11 compilers)

    • __RESHARPER__ macro that allows you to detect when ReSharper is parsing your source code and, if necessary, disable ReSharper's preprocessor for some code.

    • Quick Documentation and Parameter Information pop-ups can display documentation from documentation comments optimized for Doxygen.

ReSharper/ReSharper C++ 2016.1

ReSharper/ReSharper C++ 10.0

ReSharper 9.2/ReSharper C++ 1.1

ReSharper 9.1

ReSharper 9.0

ReSharper 8.2

ReSharper 8.1

ReSharper 8.0

ReSharper 7.1

ReSharper 7.0

ReSharper 6.1

ReSharper 6.0

ReSharper 5.0

ReSharper 4.5

ReSharper 4.1

  • Support for Microsoft Visual Studio 2008 SP1.

  • ASP.NET enhancements.

  • Improved performance and usability.

  • Bug fixes.

ReSharper 4.0

  • Comprehensive support for Visual Studio 2008 and C# 3.0, including LINQ, implicitly typed locals and arrays, extension methods, automatic properties, lambda expressions, object & collection initializers, anonymous types, expression trees, and partial methods.

  • Errors, warnings and suggestions are complemented by hints, which are by far the most non-intrusive way to recommend coding improvements.

  • .NET Framework classes were annotated with custom attributes to make ReSharper analyze your code even better than before - for instance, to let it know where format strings should be passed or where null values can or can not be assigned. You can also use these custom attributes to annotate your own source code, as well as library symbols that you don't have source code for.

  • Code Cleanup - a powerful successor to Reformat Code. By running Code Cleanup, you can instantly apply a dozen of actions, including arranging 'this' qualifiers, removing code redundancies, migrating to auto-properties, optimizing using directives, and many more.

  • All ReSharper refactorings now support C# 3.0. New members of the refactoring family are available, including Convert Method to Indexer refactoring, Convert Indexer to Method refactoring, Convert Static to Extension Method refactoring, Convert Extension Method to Plain Static refactoring, Convert Property to Auto-Property refactoring, Convert Anonymous to Named Type refactoring, and Inline Method refactoring. All refactorings that are not C# 3.0-specific are now available for Visual Basic 8.

  • Complete Statement - a new feature that inserts necessary syntax elements (braces, semicolons etc.) and gets you to the position to start the next statement.

  • CamelHumps in Code Completion. All three completion features - Basic Completion, Smart Completion, and Import Symbol Completion - let you complete any symbol by entering only its uppercase characters.

  • Templates Explorer and Template Editor - a redesigned set of tools to view, manage, and edit the three types of templates that ReSharper provides. From now on, you can manage and classify your templates in a special-purpose window, and edit them right in a Visual Studio code pane.

  • Recent Edits - a drop-down list similar to existing Go To features that shows files and symbols that you recently modified.

  • Go to Type / Symbol / File features allow you to display destination types/symbols/files in the Find Results window.

  • To-do items are now discoverable in identifiers and strings.

  • File Structure, Go to File Member, and Go to Next/Previous Member all support XML and XAML.

  • Vast improvements in Quick Documentation, including hyperlinks to related items, back/forward navigation, "read more" links and navigating to source.

  • Smoother interaction with Visual Studio ecosystem. The quality of interaction with frameworks, add-ins, version control clients and other members of the Visual Studio ecosystem (.NET Compact Framework, BizTalk, and Silverlight included) is brought to a new level.

  • ASP.NET Speedup. ReSharper 4.0 significantly speeds up analysis and, consequently, editing of ASP.NET pages, to enable more web developers benefit from the great toolset that ReSharper provides.

ReSharper 3.1

ReSharper 3.0

  • Comprehensive support for VB.NET: versatile code assistance, code completion, many important code refactorings, code generation, live templates, and more.

  • Full-fledged C# code analysis with code suggestions that go beyond just bringing your attention to errors and propose optimized code usage.

  • Cross-language functionality: for mixed C# and VB.NET projects, ReSharper helps you keep all parts of code working together smoothly and navigate around your code with ease.

  • Three editions of ReSharper (C#, VB.NET and Full) for different target audiences.

  • To-do list: create to-do items by certain patterns and navigate between them.

  • Type members preview: you can now preview existing members of a selected type, either all or polymorphic only.

  • Auto member reordering: define the order of members in the Options dialog.

  • Ability to find code dependent on specific module and find usages of symbols external to scope.

  • Go To Symbol for robust solution-wide search by name for any file member.

  • Disabling warnings at a specific position: configure the "Disable warning" context action and apply it where necessary.

  • Unit Test Explorer window: unparalleled flexibility in running and debugging unit tests.

  • XML and XAML support.

Last modified: 16 April 2020