ReSharper 2020.1

Released: Apr 16, 2020

2020.1 中的更新


Dataflow analysis of integer values in C#

  • This version of ReSharper introduces a new type of C# code analysis to track the usage of integer values in your application. This new type of analysis tracks how the values of all int local variables vary, and it verifies the correctness of all common operations on such variables to detect useless or possibly erroneous pieces of code. Namely, it warns you about:
    • Relational/equality operators always giving true or false results.
    • Heuristically unreachable switch cases checking int values.
    • Meaningless arithmetic operations, such as multiplication by 1, addition of 0, etc.
    • Possible int overflows.
    • Possible division by 0.
  • To improve the precision of analysis, this release also added two new JetBrains.Annotations attributes to use with type members and parameters of the int type: [NonNegativeValue] and [ValueRange(from, to)]. These attributes specify how the values of the particular int members can vary in runtime.

C# support

  • This release continues to add more and more support for C# 8 language features. It's refactored a lot under the hood in C# language support to prepare code analysis and other features, such as refactorings and ReSharper Build, to support nullable reference types (NRT). In ReSharper 2020.1, code analysis reports compilation warnings related to nullable reference types and provides quick-fixes for most of them.
  • There are also several new inspections and quick-fixes:
    • To detect redundant type parameter constraints with respect to nullable reference types.
    • To detect and use async overloads of methods when available instead of sync overloads.
    • To use the nameof expression instead of using the typeof(SomeType).Name construction to get the name of the current type.

Performance news

  • This release has tons of changes to the architecture of ReSharper that bring us closer and closer to the goal of running all the core ReSharper features out of the Visual Studio process. All these modifications took place under the hood, so you won’t notice any changes in the UI/UX in the ReSharper 2020.1 release build.

Navigation updates

  • This update brings several small but useful features to Navigation, and they benefit both those who primarily use the mouse and those who primarily use the keyboard to interact with ReSharper:
    • You can now middle-click (click your mouse’s scroll button) to Go to Declaration.
    • Pressing Ctrl+Enter in the result list of Go to File highlights the file in the Solution Explorer window.
    • You can now use a full path in Go To File / Go To Everything to find files.

Improved XAML support

  • v2020.1 makes a lot of improvements and fixes to XAML support that cover WPF, Xamarin.Forms, UWP, and Avalonia XAMLs. It provides much better support for data context inference and symbol resolution in bindings:
    • When d:BindingContext is used
    • In Picker.ItemDisplay in Xamarin.Forms
    • RelativeSource binding in Xamarin.Forms
    • Template binding for the ScrollViewer control
    • When ItemsSource is used as a nested element
  • In TreeView.ItemContainerStyle
    • In UWP projects this release adds support for:
    • Conditional XAML markup
    • CustomResource binding
  • Additional fixes include support for:
    • Using the Uniform Resource Name (URN) in a definition of a custom XML namespaces schema
    • Putting a slash symbol in a resource name
    • x:Static directives for Avalonia

Updates to Unit Testing

  • Starting with ReSharper 2020.1, you can export and import any of your Unit Test Sessions. This allows you to share them with your team, between your computers, or between branches when you change something in the code and want to run/cover the same set of unit tests for both branches.
  • Also, Unit Test Sessions that have already been created are preserved after upgrading to a new major ReSharper version, which is handy if you don’t want to lose opened and locked sessions.

Comments in Localization Manager

  • There are new rows on the grid for Comments. You can now leave a comment (or edit an existing one) for any value that comes from resource files right inside the grid. You can also export and import these comments. If you don’t use comments, or if you don’t need them right now, you can hide them by clicking the “Show/Hide comments” icon.
  • Apart from that, this release implements several performance fixes that make the grid faster to load and filter, eliminate some UI freezes, and make scrolling smoother.
  • It’s also worth mentioning that there are quite a few UX improvements:
    • Improved support for right-to-left languages
    • More precise navigation to specific rows from the text editor and refactoring dialogs
    • Enhanced code completion and validation in the dialogs

Code formatting

  • Code formatting brings new settings for C# Code Styles that cover the trailing comma. They can be found under ReSharper | Options | Code Editing | C# | Code Style | Trailing comma, and they are also compatible with the StyleCop SA1413 inspection except in a very few corner cases.