.NET Tools
Essential productivity kit for .NET and game developers
Rider Kicks off Its 2021.2 EAP!
Hello everyone,
We’re launching the Rider 2021.2 Early Access Program! We’ve published the first EAP build today, so let’s have a look at what’s inside.
In case you missed that, starting with the 2021.2 EAP builds of our .NET productivity tools, including Rider (on Windows), we will require .NET Framework 4.7.2 or newer installed on your machine. Learn more here.
Code Analysis
Do you still use temporary variables to swap variable values? There is a more elegant way! Rider 2021.2 EAP will help you modernize your code with the new Swap via deconstruction quick-fix!
There are two new useful inspections that come with the corresponding quick-fixes:
- Replace empty array creation with
Array.Empty<T>
(or withType.EmptyTypes
in case of newSystem.Type[0]
). - Replace
new EventArgs()
withEventArgs.Empty
.
Rider 2021.2 EAP respects the generated_code property from your .editorconfig file, allowing you to specify which files to ignore in its code analysis.
Code Analysis is getting a couple of performance improvements:
- Find similar issues now provides its results faster. This is because Rider no longer runs analyses that are irrelevant for the corresponding highlighting/inspection.
- We’ve sped up a code analysis for large and complex
switch
statements andswitch
expressions by caching/sharing the data needed for different inspections.
Nullable reference types
We are improving our support for nullable reference types (NRT) and updating some actions accordingly.
If you use NRT, you may have noticed that an action to use explicit types instead of var
always produces a nullable variable. Although that is correct, var
being nullable is an implementation detail of the compiler, and using a nullable type might be confusing if developers never store nullable values in it.
Starting from this EAP build, Rider checks whether the variable needs to be nullable, and it will produce a stricter type when possible.
As you adopt nullable reference types, you might use some nullable warning suppressions that are no longer needed, since the suppressed expression is no longer nullable. Rider will help you find such suppressions and remove them.
Finally, sometimes we may be too optimistic about some code and suppress an actual problem, thinking it’ll never happen. When this does eventually happen, it’s very hard to backtrack such suppressions, since !
is a very common symbol in source code. If you want to investigate where nullability contracts are violated with suppressions in your solution, you can now enable a new inspection, A suppressed nullable warning might hide an underlying problem, to find every suppression without having to dig through all other usages of the !
symbol. The inspection can be found in the Rider settings. And it will not be triggered by default, since suppressions are a completely valid way to prevent the compiler from nagging you about complex code that it cannot analyze.
Unity support
Rider now warns you when you are trying to commit changes and Unity has unsaved scenes open.
We’ve also improved our online help in many ways. Importantly, you can now use the F1 (External Documentation) shortcut to navigate to localized documentation, if available locally.
Quick Documentation
If the documentation in the QuickDoc popup has attributes, it will use the appropriate syntax highlighting.
Also, the QuickDoc popup shows concrete implementations of generics instead of placeholder values.
Solution Explorer
You can now edit File Properties (such as Build Action or Copy to Output Directory) for multiple items selected in the Solution Explorer.
IIS Express support
Rider will warn you when you try to run a 64-bit web application on 32-bit IIS Express (“use64Bit”: false in launchSettings.json) in in-process mode.
Razor
Razor developers working on large views can turn off the CPU-intensive assistance and automatic suggestions if their editor begins to lag. You can find the settings here: Preferences/Settings | Editor | General | Typing Assistance | Razor | Allow CPU-intensive typing assist
.
Navigation
The Go To Base/Inheritors list shows hidden overrides, as well.
Code Styling and Formatting
- Support for Pico brace (indenting) style is here.
- It’s now possible to specify advanced naming rules for
records
, extension methods, andcatch
variables.
Dynamic Program Analysis
The list of issues now supports multi-selection.
On the off chance you’re developing a performance profiler and Dynamic Program Analysis (DPA) is affecting your profiling (i.e. application performance): you can disable DPA when starting a profiling session. To do this, have your profiler set the JETBRAINS_DPA_AGENT_ENABLE environment variable to 0.