ReSharper 2020.3 Roadmap

Matthias Koch

In this post, we’d like to share our plans for ReSharper 2020.3 and find out what we can do next to improve your development experience. Your feedback is always welcome!

The following is a list of our priorities for the next release cycle of 2020.3. Note that these are features we’re working on – as opposed to features scheduled for delivery. Some of these might come with later versions.

  • .NET and C# – Support for new platform and language features, like top-level statements or target-typed new expressions. We will extend our support for nullable reference types (NRT), for instance with a dedicated action to transform JetBrains annotations to NRTs and Roslyn annotations.
  • Command-Line Tools – We’re going to revive our CI/CD tools like InspectCode to allow for easy inclusion of third-party plugins from the command-line. Another interesting feature is to allow CleanupCode.exe to reformat code without loading the full solution, thus saving overall execution time.
  • Out-Of-Process – The architecture refactoring, which is the most difficult and fragile part, is now completed. Our next move will be to upgrade individual features to work on the new async API, like tool windows, popups, parameter info, and error stripes. Compared to the architecture refactoring these tasks are much smaller and also much easier to do in parallel.
  • Fuzzy Search – Most searches currently uses either exact terms or regular expressions. While exact terms are often too constraining, the effort to write a regular expression can be astronomical. Why not create a fuzzy search that is more natural to use? This search could ignore minor typos, look further ahead, or ignore a term in a longer search string that is preventing any results from being found…
  • Inlay Hints – It’s time to re-think! Hints, and especially type hints, can be disruptive when you’re reading familiar code. To this end, we’ll introduce a push-to-hint functionality that gives you information only when you need it. We are also considering implicit conversions as another use-case for inlay hints.
  • Predictive Debugger – During debug sessions it can be helpful to know which path our program will take without actually executing it. This helps us identify problems as soon as they materialize, instead of backtracking bugs. Just like our recently presented data flow analysis, this also takes JetBrains annotations into account to show possible halts.
  • Decompiler – Support for new language features and better IL Viewer synchronization, especially for declarations of local functions with parameters and attributes.
  • Avalonia – This is one of the most popular frameworks for UI development. We will add support for their binding syntax and CSS-like style syntax.
  • Endpoint Viewer – A number of IntelliJ-based IDEs recently introduced an endpoint viewer for microservices. We want to bring that joy to ReSharper users as well. It will give them more insights into Swagger and OpenAPI specifications, and greatly simplify request troubleshooting. We’ll start our journey by analyzing ASP.NET route attributes.
  • Code Inspections – Everyone working with EntityFramework has probably heard about the N+1 problem. We’re going to add a couple of analyzers to warn you if this problem appears in your code. We’ll also extend our collection of inspections for test frameworks, like NUnit, xUnit.net, and AutoFixture.

There will probably be plenty of other, smaller features implemented along the way. And of course, we also have a number of bugfixes planned for the upcoming release.

What do you think about these plans? Feel free to comment below, or to submit a new feature request in our issue tracker if we’ve missed something, or upvote any existing requests to let us know they are important to you. We’re looking forward to your feedback!

Subscribe

Subscribe to .NET Tools updates