ReSharper 2020.2 bietet neue Inspektionen und Quick-Fixes für C# 8 und nullfähige Verweistypen, Codebereinigung beim Speichern, einen überarbeiteten Unit-Test-Runner sowie Verbesserungen bei der Barrierefreiheit. Außerdem zündet ReSharper C++ die nächste Stufe bei der Unreal-Engine-Entwicklung und bietet zahlreiche Verbesserungen in den Bereichen C++/CLI-Unterstützung, Navigation und Codeanalyse.
Kostenlose 30-Tage-Testversion verfügbar
Die Nullability-Codeanalyse erkennt jetzt mehr Fälle und kann Nullability-Fehler auch dann nachverfolgen, wenn im Programmfluss Dekonstruktion oder foreach
-Schleifen vorkommen. Ein entsprechender Quick-Fix ist selbstverständlich ebenfalls verfügbar.
Die Codeanalyse berücksichtigt nun JetBrains.Annotations-Attribute für die API (sowohl NotNull
als auch CanBeNull
) – selbst wenn im Code nullfähige Verweistypen mit #nullable disable
deaktiviert wurden.
Kontextaktionen, mit denen foreach
zu LINQ und LINQ zu Code konvertiert werden kann, sind auch für IAsyncEnumerable<T>
verfügbar – vorausgesetzt, das NuGet-Paket System.Linq.Async
ist in Ihrem Projekt installiert.
Jetzt können Sie mit den entsprechenden Quick-Fixes auf einfache Weise Implementierungen für IEqualityComparer<T>
und IComparer<T>
generieren.
Die Codeanalyse berücksichtigt jetzt Compiler-Annotations (z. B. AllowNull
und DisallowNull
) bei der Nullability-Überprüfung von implementierten oder überschriebenen Membern.
Mit neuen Inspektionen und Quick-Fixes können Variablen und Rückgabetypen als „nicht nullfähig“ festgelegt werden, wenn sie an keiner Stelle nullfähige Werte enthalten oder zurückgeben.
Die Codeanalyse kann jetzt die dotnet_diagnostic-Regeln in der .editorconfig-Datei befolgen. Geben Sie die Severity der Inspektionen in der .editorconfig-Datei an, z. B. dotnet_diagnostic.CS1058.severity = hint
, und ReSharper zeigt die Inspektionen entsprechend an.
Die Unterstützung für Standardimplementierungen in Schnittstellen wurde in dieser Version erweitert. In der linken Randleiste des Editors werden implementierte oder überschriebene Methoden markiert, und auch beim Refactoring und bei der Navigation wird dieses C#-Feature berücksichtigt.
In XAML-Code werden jetzt Inlay-Hints bereitgestellt. Es gibt Hints für Markup-Eigenschaftennamen und DataContext
sowie für Margin- und Padding-Werte – so müssen Sie sich ihre Reihenfolge nicht merken.
Der Quick-Fix Suppress nullable warning with ! kann über das Alt+Enter-Menü für eine Projektmappe deaktiviert werden.
Jetzt können Sie ReSharper so konfigurieren, dass beim Speichern einer Datei automatisch die Codebereinigung durchgeführt wird. Es wurde auch Zeit, oder?
Endlich werden für diese Funktionalität keine Drittanbieter-Plugins mehr benötigt! Diese Funktion kann unter ReSharper | Options | Code Editing | Code Cleanup
aktiviert werden.
Der Umfang der Codebereinigung kann jetzt detaillierter eingestellt werden – zum Beispiel auf kürzlich geänderte Dateien oder kürzlich geöffnete Dateien. Dadurch kann die Bearbeitungsdauer erheblich verkürzt werden, da die Codebereinigung nicht die gesamte Projektmappe verarbeiten muss. Für eine genauere Anpassung können Sie sogar angeben, was als „kürzlich“ gelten soll.
Dateien können nach Abschluss der Codebereinigung automatisch gespeichert werden. Diese Funktion kann unter ReSharper | Options | Code Editing | Code Cleanup
aktiviert werden.
Es wurden mehrere Verbesserungen vorgenommen, um die Ausführungsdauer der Codebereinigung zu verkürzen:
Wir haben unsere Unit-Test-Runner sowohl für das .NET-Framework als auch für .NET Core von Grund auf überarbeitet, um für beide Runtimes, die vom Visual-Studio-Prozess ausgeführt werden, denselben Runner verwenden zu können. Dadurch konnten eine Reihe von Problemen beim Erkennen, Ausführen und Debuggen von Unit-Tests gelöst werden, und wir haben jetzt die vollständige Kontrolle über Unit-Test-Hierarchien für .NET-Core-Tests.
Der neue Test-Runner bietet integrierte Unterstützung für:
Die auffälligste Neuerung in der ReSharper-Benutzeroberfläche ist die Unterstützung des DisplayName
-Attributs in .NET-Core-Tests für die Frameworks xUnit und NUnit.
Wenn Sie Filter auf den Unit-Test-Baum anwenden – z. B. Passed/Failed usw. – zeigen die Zähler zwei Werte an: die Gesamtzahl aller Tests und die Anzahl der Tests, die den Filterkriterien entsprechen.
Zwei neue Aktionen im Menü Navigate To bieten Ihnen folgende Möglichkeiten:
Wir unterstützen jetzt die Assert.Multiple
-Methode von NUnit, mit der mehrere Assertions geprüft werden können, ohne den Test nach dem ersten Fehler abzubrechen.
Die Zeitbereiche für die Gruppierung nach Dauer können direkt in den Optionen bearbeitet werden.
Diese Version bietet eine verbesserte Unterstützung für Screenreader wie JAWS, NVDA und Microsoft Narrator. Diese Screenreader haben jetzt einen besseren Zugriff auf:
Gute Nachrichten für UWP-Entwickler: Die Unterstützung für kompilierte Bindungen mit x:Bind
ist endlich verfügbar!
ReSharper löst x:Bind
-Code korrekt auf und bietet mehrere Inspektionen mit passenden Quick-Fixes. Sie erhalten Warnungen bei fehlenden Eigenschaften-Settern, BindBack
-Attributen und kollidierenden Überladungen. Darüber hinaus gibt es eine Reihe von Create from Usage-Quick-Fixes, um ein richtiges Feld, eine Eigenschaft oder eine Methode in C#-Codebehinds zu generieren.
Die IDE bietet Code-Completion und Parameterinfos für die Attribute propertyPath
, BindBack
und UpdateSourceTrigger
innerhalb eines x:Bind-Ausdrucks.
Die Refactorings Change Signature und Safe Delete erkennen jetzt Methodenverwendungen in XAML-Code und aktualisieren sie entsprechend. Außerdem können Make Static/Const und Encapsulate Field direkt aus XAML-Code aufgerufen werden, und XAML-Verwendungen werden beim Aufruf aus C#-Codebehinds korrekt aktualisiert.
Die Nullability-Erkennung wurde in die x:Bind
-Codeanalyse integriert. ReSharper zeigt jetzt Null-bezogene Inspektionen direkt im XAML-Code an, wenn der C#-Code CanBeNull
- oder NotNull
-Attribute enthält, z. B. „Possible System.NullReferenceException
“ und „Possible null
assignment to non-nullable entity“ für Argumente einer Methode, die in einem propertyPath
verwendet wird.
Auch andere ReSharper-Funktionen wie Find Usages und Go to Declaration berücksichtigen x:Bind
-Bindungen.
In Version 2020.1 wurde Rider auf MacOS und Linux von Mono auf .NET Core umgestellt. Ab dieser Version werden die ReSharper-Befehlszeilentools unter Windows, Linux und macOS auf .NET Core ausgeführt.
Bitte beachten: Die ReSharper-Befehlszeilentools werden nicht mehr mit Mono ausgeliefert, und die Tools für MacOS und Linux setzen jetzt .NET Core 3.1 voraus.
Ein weiterer Vorteil der Umstellung von Mono auf die .NET-Core-Runtime besteht darin, dass die ReSharper-Befehlszeilentools jetzt als globales .NET-Core-Tool installiert werden können. Führen Sie zur Installation den folgenden Befehl aus:
dotnet tool install -g JetBrains.ReSharper.GlobalTools --version 2020.2.0-*
Die Ausführung der Tools erfolgt mit jb tool_name [Optionen]
, zum Beispiel:
jb inspectcode projektmappe.sln -o=<pathToOutputFile>
In dieser Version wurde die yFiles-Engine, mit der das Diagramm erstellt wird, auf die neueste Version aktualisiert. Zusätzlich zu unseren eigenen Optimierungen bringt die neue yFiles-Version eine weitere Performance-Verbesserung beim Zeichnen des Diagramms.
Jetzt ist es möglich, das erstellte Diagramm in neue Formate zu exportieren:
Das Diagramm-Toolfenster unterstützt jetzt das dunkle Design von Visual Studio.
Die Navigation zu den Verwendungen von Typen aus externen Assemblies ist jetzt um einiges einfacher. ReSharper kann direkt von den Go to Type-Suchergebnissen zu Find Usages navigieren. Probieren Sie es aus: Suchen Sie nach einem Typ, markieren Sie ihn mit der Tastatur oder durch Hinbewegen der Maus und rufen Sie mit den entsprechenden Tastenkürzeln Find Usages oder Go to Usage auf.
Ab Version 2020.2 können Sie einige ReSharper-Aktionen – zum Beispiel die Anzeige der Kurzdokumentation – direkt aus den Dialogen Go to Symbol und Go to File Member aufrufen, indem Sie die Tastenkürzel drücken, die im jeweiligen Tastenbelegungsschema definiert sind.
Mehrere neue Peek-Aktionen wurden hinzugefügt, um das Ergebnis gängiger ReSharper-Aktionen in einer Peek-Definition-Ansicht anzuzeigen.
Rufen Sie die Aktion Peek Implementation auf, um die Implementierung in einer Peek-Ansicht zu öffnen. Klicken Sie dazu mit dem Mausrad, während Sie Strg+Alt gedrückt halten, oder drücken Sie Strg+Alt+Q, während sich der Textcursor auf einem Symbol befindet.
Rufen Sie die Aktion Peek Base Symbols auf, um alle Basissymbole in einer Peek-Ansicht aufzulisten. Drücken Sie zum Ausführen einfach Umschalt+Alt+Q auf einem Symbol.
In dieser Version wurde der Conflicts-Dialog als separater Schritt in der Refactorings-Oberfläche implementiert. Die bisher verwendete einfache Liste wurde durch eine nach Dateien gruppierte Baumstruktur ersetzt.
Wenn die Refactorings Introduce parameter oder Introduce field für einen Ausdruck aufgerufen werden, fragt ReSharper nach, auf welchen Teil des Ausdrucks das Refactoring angewendet werden soll.
ReSharper C++ 2020.2 unterstützt das Unreal-Engine-Projektmodell, einschließlich optimierter Autoimport-Vorschläge für include
-Direktiven und Unterstützung für verschiedene Projektmappen-Konfigurationen. ReSharper C++ hält sich zudem enger an die Unreal-Engine-Richtlinien. Dazu wurden die Severities der Inspektionen und die Aktionen zur Codegenerierung angepasst.
Um die Navigation zu vereinfachen, behandelt Search Everywhere/Go To Symbole aus Engine-Quellen jetzt genauso wie Bibliothekssymbole. Es gibt auch mehrere neue Inspektionen, die Sie bei der Umsetzung der Unreal-Engine-Richtlinien unterstützen und Sie daran erinnern, die Projektdateien im Unreal Editor zu aktualisieren.
Da die ReSharper-Lizenz nun sowohl ReSharper als auch ReSharper C++ umfasst, wurde die Unterstützung für C++/CLI – das eine Brücke zwischen den Sprachen bildet – an vielen Stellen aktualisiert, und die Interoperabilität zwischen C++/CLI und C# wurde verbessert.
ReSharper C++ findet abgeleitete Symbole in C#-Code, und Go to Base Symbols sowie Go to Derived Symbols funktionieren jetzt mit importierten CLR-Entitäten.
ReSharper C++ schaut Ihnen jetzt bei der Speicherallokation über die Schulter und schlägt einen Quick-Fix vor, um gcnew
durch new
bzw. umgekehrt zu ersetzen, wenn der Zieltyp ungültig ist. Eine weitere Inspektion warnt Sie, wenn Sie bei einer verwalteten Klasse oder Schnittstelle den C++-Bezeichner final
verwenden. Die IDE schlägt dann vor, stattdessen sealed
zu verwenden. Außerdem können Sie jetzt mit einem Quick-Fix Casts im C-Stil durch safe_cast
ersetzen.
ReSharper richtet jetzt Spalten mit ähnlichem Code korrekt aus, auch wenn nur ein Teil der ausgerichteten Gruppe formatiert wird, sodass beim Hinzufügen eines Semikolons oder einer Klammer die Ausrichtung nicht mehr verloren geht.
Es gibt einige Verbesserungen im dotCover-Konsolenrunner:
--reportype = SummaryXml
können Sie einen neuen zusammenfassenden Bericht erstellen, der angibt, wie viele Klassen, Methoden und Anweisungen insgesamt abgedeckt sind. --reporttype=HTML,SummaryXml
--output=report.html;summary.xml
dotTrace kann sowohl als eigenständiges Programm als auch bei der Rider-Integration den nativen Teil von Mono/Unity-Anwendungen unter Windows profilen. Wenn Sie eine Sitzung mit der Option Enable native profiling starten, werden in den Performance-Snapshots sowohl native als auch verwaltete Aufruflisten angezeigt. Diese Funktion kann für die Analyse von Leistungsengpässen in Unity-Spielen hilfreich sein.
Auch beim dotTrace-Konsolenprofiler gibt es mehrere Verbesserungen:
Sie können jetzt angeheftete Objekte als separaten Objektsatz öffnen. Auch Objekte, die von den GC-Roots aus nicht erreichbar sind, lassen sich als separater Objektsatz öffnen.
Am dotMemory-Befehlszeilenprofiler wurden folgende Verbesserungen vorgenommen:
Bei dotPeek wurde die Unterstützung für die neuesten C#-Versionen weiter verbessert. Die neue Version bietet unter anderem:
Throw
-AusdrückeNullablePublicOnly
-AttributKostenlose 30-Tage-Testversion verfügbar