Das ist neu in ReSharper 2021.2

ReSharper 2021.2 bietet neue Inspektionen und Quick-Fixes für die C#-Codeanalyse, unterstützt nullfähige Verweistypen und stellt viele Funktionen nicht nur für manuell geschriebene Codedateien, sondern auch für generierte Dateien zur Verfügung. Außerdem unterstützt ReSharper 2021.2 Einzeldatei-Anwendungen im Assembly Explorer, verbessert die Problembehandlung bei der dynamischen Programmanalyse und bietet erweiterte Namensregeln für Records, Erweiterungsmethoden und Catch-Variablen.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

C#-Codeanalyse

Verwenden Sie temporäre Variablen, um Variablenwerte zu vertauschen? Es gibt jetzt eine elegantere Möglichkeit! ReSharper 2021.2 hilft Ihnen mit dem neuen Quick-Fix Swap via deconstruction, Ihren Code zu modernisieren.

Reduzieren Sie die Anzahl der Zuordnungen in Ihrem Code und erhöhen Sie die Geschwindigkeit! Ersetzen Sie das Anlegen von leeren Arrays durch Array.Empty<T>.

Wenn Sie einen neuen Type[0] allozieren, schlägt ReSharper die Verwendung von Type.EmptyTypes vor, um eine effizientere Speichernutzung zu ermöglichen.

Wenn keine speziellen EventArgs benötigt werden, weist ReSharper Sie darauf hin, dass Sie new EventArgs() durch EventArgs.Empty ersetzen können.

Andere Verbesserungen:

  • Verwenden Sie die Eigenschaft generated_code in .editorconfig, um Dateien oder Ordner als generierten Code zu markieren und von der Verarbeitung auszuschließen.
  • Die Codeanalyse von Membern mit vielen lokalen Funktionen und Closures erfolgt jetzt schneller.
  • Freuen Sie sich auf Performance-Verbesserungen bei Find similar issues und bei der Codeanalyse von großen und komplexen switch-Anweisungen und switch-Ausdrücken.

Nullfähige Verweistypen (NRT)

Mussten Sie nach der Aktivierung von nullfähigen Verweistypen an zahlreichen Stellen in Ihrem Code Nullability-Warnungen unterdrücken?

ReSharper weist Sie darauf hin, wenn eine Unterdrückung (!) nicht mehr benötigt wird und gefahrlos entfernt werden kann.

Mit einer neuen Kontextaktion können Sie alle unterdrückten Nullability-Warnungen im Gültigkeitsbereich finden. Mithilfe des Find Results-Toolfensters können Sie dann überprüfen, ob die Unterdrückungen noch benötigt werden.

Wir haben ein neues Refactoring eingeführt, mit dem die Nullfähigkeit geändert werden kann! Es ist über verschiedene Wege zugänglich: über einen Quick-Fix, über die Aktion Refactor This sowie durch ein In-Place-Refactoring beim Hinzufügen oder Entfernen der Nullability-Annotation (?).

ReSharper aktualisiert die Nullability-Annotationen und schlägt vor, die Änderungen in Ihren gesamten Codebestand zu übernehmen.

Wenn Sie JetBrains.Annotations-Attribute verwenden und nullfähige Verweistypen aktiviert haben, stehen Ihnen mehrere neue Inspektionen mit entsprechenden Quick-Fixes zur Verfügung.

Aktualisieren Sie JetBrains.Annotations-Attribute auf die NRT-Syntax und auf Attribute, die vom Compiler unterstützt werden! ReSharper kann beispielsweise [CanBeNull] string zu string? ändern.

ReSharper informiert Sie über redundante JetBrains.Annotations-Attribute wie [NotNull] string oder [ItemCanBeNull] List. Und natürlich gibt es einen Quick-Fix, mit dem Sie Ihren Code aktualisieren können.

Wenn die Typ-Annotationssyntax nicht erlaubt ist, kann eine neue Inspektion mit dazugehörigem Quick-Fix vom Compiler unterstützte Annotationen hinzufügen. Zum Beispiel:

  • [JetBrains.Annotations.NotNull] T param zu [DisallowNull] T param (where T: class?)
  • [JetBrains.Annotations.CanBeNull] T zu [System.Diagnostics.MaybeNull] T (in C# 8, wo die Syntax T? nicht zulässig ist)

Mit neuen Inspektionen und Quick-Fixes unterstützt Sie ReSharper dabei, vom Compiler unterstützte Annotationen wie [DisallowNull], [AllowNull], [MaybeNull] und [NotNull] zu verwenden.

Eine neue Inspektion erkennt redundante Compiler-Annotationen, etwa die Verwendung von [AllowNull] mit einem nullfähigen Typ. Mit dem dazugehörigen Quick-Fix können Sie die Annotation entfernen.

Wenn die Syntax für nullfähige Verweistypen verwendet werden kann, schlägt ReSharper dies vor.

Es gibt noch weitere Verbesserungen, die nicht unerwähnt bleiben sollten:

  • ReSharper prüft, ob Variablen nullfähig sein müssen und erzeugt nach Möglichkeit striktere Typen.
  • Viele Kontextaktionen, Quick-Fixes und Postfix-Vorlagen wurden aktualisiert, um mit unterdrückten Nullability-Warnungen besser umzugehen. Die Unterdrückung von Nullability-Warnungen wird beibehalten bzw. bei generiertem Code neu erzeugt, wenn der ursprüngliche Code die Warnung unterdrückte.
  • Wir haben die Unterstützung für die Verwendung von Generics mit nullfähigen Verweistypen verbessert.

Quellcodegenerator-Unterstützung

Quellcodegeneratoren können verwendet werden, um mühsame und wiederholungsintensive Entwicklungstätigkeiten zu reduzieren und um Code zur Kompilierungszeit zu generieren. In ReSharper 2021.2 können viele der Funktionen, die für manuell geschriebene Codedateien konzipiert wurden, auch für generierte Dateien verwendet werden. Wir haben die Editor-Unterstützung verbessert, den Debugger ausgebaut, eine projektmappenweite Analyse (solution-wide error analysis, SWEA) eingeführt und Refactorings hinzugefügt.

Bei generiertem Code werden Warnungen und Fehler im Editor und in der Markierungsleiste angezeigt.

Die projektmappenweite Fehleranalyse (SWEA) umfasst jetzt Dateien, die von Quellcodegeneratoren erzeugt wurden. Wenn in einer generierten Datei in Ihrem Projekt ein Fehler vorliegt, können Sie ihn sofort erkennen und dorthin navigieren.

Sie können dieses Verhalten mit der neuen Option zum Einschließen von generierten Dateien umschalten. Die Option ist standardmäßig aktiviert und befindet sich unter ReSharper | Options | Code Inspection | Settings | Enable solution-wide analysis.

Refactorings können jetzt in generierten Dateien angewendet werden. Verwenden Sie das Rename-Refactoring, um eine generierte Eigenschaft umzubenennen. ReSharper benennt das zugehörige Symbol auch in manuell geschriebenem Code um!

Beim Refactoring Change Signature wiederum können Sie überprüfen, ob der Code, der nach der Änderung generiert wird, noch kompiliert werden kann.

Außerdem haben Sie die Möglichkeit, Find Usages zu verwenden, nach erbenden Elementen zu suchen, von generiertem Code zu manuell geschriebenem Code zu navigieren (mit Strg+Klick und Navigate To) und noch einiges mehr.

Die semantische Hervorhebung ist aktiviert, sodass Klassenmember wie Ereignisse, Felder und Eigenschaften korrekt eingefärbt werden. Alle Inlay-Hinweise werden ebenfalls angezeigt.

Die ReSharper-eigenen Data-Tips werden beim Debuggen angezeigt. Dies ermöglicht eine erweiterte Debugging-Unterstützung mit Suchfunktion, Hervorhebung von Eigenschaften und mehr.

ReSharper unterstützt jetzt von Quellcodegeneratoren erzeugten Code in VB.NET.

HttpClient-URI-Unterstützung

In der vorherigen Version haben wir die Unterstützung für ASP.NET-Routenvorlagen implementiert. Version v2021.2 wurde in dieser Richtung weiterentwickelt und bietet eine bessere Unterstützung für URI-Zeichenfolgen im HttpClient:

  • Beim Verwenden von HttpClient schlägt die Code-Completion alle URIs vor, die zu Aktionen in Controllern aufgelöst werden können, die mit den Attributen [Route], [Http{Methode}] oder [AcceptVerbs] annotiert sind.
  • Mit Go to Declaration und Find Usages können Sie auf einfache Weise zwischen Routenattributen in Controllern und diesen URIs navigieren. 
  • Das Umbenennen eines Routenattributs in einem Controller wirkt sich auf die Verwendung in URIs aus, und Sie können eine Route sogar direkt in der URI-Zeichenfolge umbenennen.

Navigation

Wir haben nützliche neue Navigationsfunktionen hinzugefügt:

  • Beim Debuggen hat ReSharper jetzt einen noch besseren Überblick über Ihren Code. Dadurch können Sie mit Go To Declaration (oder Strg+Klick) von einer Schnittstellenreferenz direkt zu deren Implementierung navigieren.
  • Die Liste Go To Base/Inheritors zeigt jetzt auch versteckte Überschreibungen an.

Codestil und Formatierung

Manchmal kann es nützlich sein, erweiterte Namensregeln für Records, Erweiterungsmethoden und Catch-Variablen anzugeben. Ab dieser Version haben Sie die Möglichkeit, solche Regeln zu konfigurieren.

Wenn Sie den Pico-Klammer- und Einrückungsstil bevorzugen, sind Sie bei uns richtig. Der Pico-Stil wurde als Option auf dem Tab Brace Layout unter ReSharper | Options | Code Editing | C# | Formatting Style | Braces Layout hinzugefügt.

Wir haben die Standard-Formatierungseinstellungen in einigen Fällen geändert, um sie an die Visual-Studio-Standardeinstellungen anzupassen.

Refactoring „Inline Function“ für C++

Mit dem neuen Refactoring Inline Function können Sie einen Funktionsaufruf schnell durch den Funktionskörper ersetzen. ReSharper C++ führt die erforderlichen Änderungen durch, kümmert sich um alle Namenskonflikte und formatiert den entstandenen Code neu.

Hinweise zu C++-Typumwandlungen

ReSharper C++ 2021.2 bietet Inlay-Hinweise für implizite Typumwandlungen, die unbemerkt zu Datenverlust oder Leistungsproblemen führen können. ReSharper C++ zeigt jetzt die Stellen in Ihrem Code an, an denen implizite Umwandlungen stattfinden.

Das ist neu in ReSharper C++ 2021.2

Dynamische Programmanalyse (DPA)

Verbesserte Problembehandlung

DPA speichert jetzt zwei Werte für jedes Problem – den Höchstwert und den aktuellen Wert. Dies verhindert falsche Negativergebnisse. Bisher konnte es passieren, dass Probleme unter den Schwellenwert fielen und aus der Problemliste verschwanden, und zwar nicht, weil sie behoben wurden, sondern weil sich ihre Startbedingungen geändert hatten (das Programm lief kürzer, die erforderliche Funktionalität wurde nicht ausgeführt usw.).

Weitere Updates

  • DPA wird automatisch deaktiviert, wenn Sie das Performance-Profiling starten.
  • Im Fenster Dynamic Program Analysis können jetzt mehrere Probleme ausgewählt werden.
  • Das Unterdrücken von Problemen mit dem Attribut SuppressMessage funktioniert jetzt bei asynchronen Methoden.

Assembly Explorer

The embedded decompiler can now decompile single-file apps. Es werden die Einzeldateiformate der SDKs .NET Core 3.1, .NET 5 und des künftigen .NET 6 unterstützt. Im Assembly-Explorer können Sie die in einer Einzeldatei-App integrierten Assemblies in der gewohnten Weise durchsuchen.

Verbesserte Coverage-Performance dotUltimate

Verbesserte Coverage-Performance
  • dotCover kann jetzt die Coverage-Analyse von Testklassen innerhalb einer Assembly parallel durchführen. In bestimmten Szenarien ermöglicht dies eine schnellere Coverage-Analyse.
  • Unit-Test-Runner können jetzt für .NET-Core- und .NET-Projekte vorab geladen werden. Dies ermöglicht einen schnelleren Start der Coverage-Analyse, da die Unit-Test-Runner bereits im Arbeitsspeicher geladen sind.

Das ist neu in dotCover 2021.2

Analyse der Speicherallokation dotUltimate

In dieser Version haben wir die Möglichkeiten zur Analyse der Speicherallokationen weiter verbessert. In der Ansicht Memory Allocation wurden zwei neue Tabs hinzugefügt:

  • Auf dem Tab Methods können Sie eine einfache Liste der Methoden analysieren, denen Speicher zugewiesen wurde.
  • Der Tab Call Tree ermöglicht die Analyse des Allokations-Aufrufbaums. Jeder Knoten in der Baumstruktur zeigt neben der aufgerufenen Methode die durch den Aufruf allozierten Objekte.

Das ist neu in dotMemory 2021.2

Natives Profiling dotUltimate

Unter Windows können jetzt native Anwendungen profiliert werden. Beim Starten einer Profiling-Sitzung haben Sie die Möglichkeit, native Quellsymboldateien von einem Remote-Server herunterzuladen. Natives Profiling ist nur für den Profiling-Typ Timeline verfügbar.

Sonstiges

Razor

Wenn Sie bei der Razor-Entwicklung an großen Views arbeiten, die Ihren Editor ins Stocken bringen, können Sie die CPU-intensiven Unterstützungen und die automatischen Vorschläge deaktivieren. Die Einstellungen finden Sie hier: ReSharper | Options | Environment | Editor | Behavior | Razor | Allow CPU-intensive typing assist.

Befehlszeilentools von ReSharper

Wir haben eine grundlegende Änderung („Breaking Change“) im InspectCode-Tool vorgenommen. Ab v2021.2 stellt InspectCode NuGet-Pakete automatisch wieder her und erstellt einen Build der Projektmappe, bevor es mit der Analyse beginnt. Wenn dieses Verhalten unerwünscht ist, können Sie mit dem Parameter --no-build das Wiederherstellen von NuGet-Paketen und das Erstellen eines Projektmappen-Builds deaktivieren.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar