Das ist neu in ReSharper 2022.3

ReSharper 2022.3 führt eine grundlegende Unterstützung für die neuesten Sprachmerkmale von C# 11 ein, darunter UTF-8-Literale, dateilokale Typen, als „static virtual“ spezifizierte Member, Pattern-Matching über Spans und mehr. Für dieses Release haben wir die Syntaxhervorhebung überarbeitet, eine Erkennung von anfälligen Abhängigkeiten in NuGet-Paketen eingeführt und eine Import- und Exportfunktion von Typ- und Projektabhängigkeitsdiagrammen im GraphML-Format umgesetzt. Diese Version bietet außerdem eine erste Unterstützung für Microsoft Visual Studio auf ARM64.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

C# 11

Wir sind dabei, die grundlegende Unterstützung für die neuesten Sprachmerkmale von C# 11 fertigzustellen:

UTF-8-Literale

Wir haben grundlegende Unterstützung für UTF-8-Literale eingeführt. Bei der Codeanalyse wird nun vorgeschlagen, ein Literal mit dem Suffix u8 statt der Methode System.Text.Encoding.UTF8.GetBytes() oder einem Byte-Array mit UTF8-Symbolen zu verwenden. Hinzu kommen mehrere Compiler-Warnungen und -Fehler für UTF-8-Literale.

Dateilokale Typen

Dateilokale Typen erhalten nun eine grundlegende Unterstützung. Diese umfasst die Erkennung der neuen Syntax, den Zugriffsmodifikator file für Typen sowie Compiler-Warnungen und -Fehler mit entsprechenden Quick-Fixes wie z. B. Move class to outer scope, wenn der Modifikator file für eine geschachtelte Klasse angegeben wird. Mit einer nützlichen Kontextaktion können Sie außerdem einen allgemeinen Typ in einen dateilokalen Typ umwandeln.

Raw-Zeichenfolgen

ReSharper kann jetzt reguläre und Verbatim-Zeichenfolgen in ihre Raw-Gegenstücke umwandeln. Dies bedeutet auch, dass zahlreiche bestehende Funktionen für Zeichenfolgen nun auch für Raw-Zeichenfolgen verfügbar sind.

List-Pattern-Vorschläge

Ab diesem Release schlägt die IDE die Verwendung der in C# 11 eingeführten List-Pattern-Syntax zur Prüfung der Elemente einer Collection vor (anstelle der herkömmlichen Collection-Längenprüfungen mit anschließendem Indexzugriff).

„static virtual“-Modifikator für Member

Ab C# 11 können Sie static-Member in Schnittstellen mit den Modifikatoren abstract und virtual versehen und solche Member in generischem Code mit Typparametern verwenden, die durch diese Schnittstelle spezifiziert sind. ReSharper wurde aktualisiert, um polymorphe static-Member genauso zu behandeln wie gewöhnliche polymorphe Member:

  • Vererbungsmarkierungen in der Randleiste.
  • Navigation zu implementierenden/übergeordneten Membern.
  • Generierung fehlender Implementierungen.
  • Die Completion-Vorschläge nach dem Schlüsselwort override enthalten auch Schnittstellen-Member, sodass Sie abstrakte oder als virtual static gekennzeichnete Member unkompliziert implementieren können.

Vorzeichenloser Rechtsverschiebungsoperator (>>>)

ReSharper erkennt jetzt den umständlichen Code, den C#-Entwickler*innen bisher schreiben mussten, um eine vorzeichenlose Rechtsverschiebung von vorzeichenbehafteten Datentypen vorzunehmen, und schlägt stattdessen den in C# 11 eingeführten Operator >>> für die vorzeichenlose Rechtsverschiebung vor.

Pattern-Matching über Spans

Wenn Sie Zeichen-Spans parsen, verwenden Sie wahrscheinlich häufig die Methode MemoryExtensions.SequenceEqual. C# 11 hat eine Abkürzung für diese Prüfung eingeführt. Sie können jetzt einfach Pattern-Matching mit is oder switch verwenden, um Spans mit Zeichenfolgenliteralen zu vergleichen.

ReSharper schlägt nun vor, statt mehrerer if-Anweisungen is oder switch zu verwenden.

ref-Felder und Schlüsselwort scoped

Ab C#11 können Sie ref-Felder in ref-Structs deklarieren. ReSharper unterstützt diese neue Syntaxregel, zeigt alle Compilerfehler und -warnungen an, schlägt das ref-Schlüsselwort bei der Code-Completion vor und erlaubt die Initialisierung solcher Felder in Konstruktoren.

ReSharper kennt auch das neue Schlüsselwort scoped, das Sie für Argumente und lokale Variablen verwenden können, die als ref oder ref struct spezifiziert sind. Die Unterstützung umfasst das korrekte Parsen der neuen Syntax, das Vorschlagen des Schlüsselworts scoped in der Code-Completion und die Beibehaltung von scoped beim Generieren von Methodenüberschreibungen. Auch die Kompatibilität von scoped-Modifikatoren wird überprüft, und bei abweichenden scoped-Angaben bei Überschreibungen, Schnittstellenimplementierungen und Delegatkonvertierungen werden Quick-Fixes vorgeschlagen.

C# 11 und .NET 7 haben auch Änderungen an den ref-bezogenen Sicherheitsregeln eingeführt. Die Änderungen regeln, welche Operationen für ref- und ref struct-Variablen verfügbar sind, um nach der Einführung von ref-Feldern die ref-Sicherheit in verwaltetem Code zu gewährleisten. ReSharper kennt die Änderungen und hilft Ihnen, Stellen in Ihrem Projekt zu finden, die aktualisiert und mit dem neuen Schlüsselwort scoped versehen werden müssen, um auf C# 11 oder .NET 7 migrieren zu können.

Sprachinjektionen

Mit dem Release 2022.3 führen wir einige Änderungen an der Unterstützung für Sprachinjektionen ein:

Sprachinjektionen funktionieren jetzt in Raw-Zeichenfolgenliteralen nach C# 11.

ReSharper supports the [StringSyntax] attribute from .NET 7, along with its different syntaxes for language injection and code completion.

Allgemeine C#-Updates

Randleistensymbol für globale Importe

Ein neues Randleistensymbol informiert Sie über implizite Namensraum-Importe in C#- und Razor-Dateien.

Wenn Sie in der entsprechenden Zeile Alt+Enter drücken, sehen Sie die vollständige Liste der impliziten Importe sowie Informationen zur Quelldatei, in der sich die entsprechenden global using-Direktiven befinden. Wenn Sie einen bestimmten importierten Namensraum auswählen, kann ReSharper Sie zur Deklaration navigieren – dies gilt auch für <Using Include="Some.NameSpace" />-Tags in der .csproj-Projektdatei.

ReSharper zeigt auch globale Importe aus _Imports.razor an und ermöglicht die Navigation zu den entsprechenden Importdefinitionen.

Completion von Formatstrings

Mit der Einführung der Zahlentypen Int128 und UInt128 in .NET 7 haben wir die Formatangaben-Vorschläge in der Code-Completion aktualisiert.

Dabei haben wir auch die fehlende Unterstützung für die Typen DateOnly und TimeOnly aus .NET 6 sowie den in .NET 5 eingeführten Fließkommazahlentyp mit halber Genauigkeit Half nachgereicht.

Triviale Patterns in Ausdrücke umwandeln

Manchmal werden Pattern-Matching-Ausdrücke nach einem Refactoring zu trivialen rekursiven Patterns. In einem solchen Fall lohnt es sich möglicherweise nicht mehr, die rekursive Syntax zu verwenden. Daher bietet ReSharper jetzt die Möglichkeit, Patterns durch einfachere Ausdrücke zu ersetzen, wobei die ursprüngliche Pattern-Matching-Semantik beibehalten wird.

Hinweis auf void-Ausdruck in der Code-Completion

Manchmal kommen bei der Texteingabe nach einem Aufruf kaum sinnvolle Vorschläge. Ein Grund dafür kann sein, dass der Aufruf keinen Wert zurückgibt, da eine void-Methode aufgerufen wurde. Um dies zu erkennen, sind normalerweise einige IDE-Aktionen erforderlich (zurückgehen und zur Deklaration der Methode navigieren oder die Maus auf den Aufruf bewegen). Ab dieser Version erhalten Sie nach einem Aufruf, der void zurückgibt, durch den Hinweis „void“ eine unmittelbare Rückmeldung zum Rückgabetyp des Aufrufs. Wenn Sie diesen void-Vorschlag übernehmen, wird nach dem Aufruf ein Semikolon eingefügt, wenn dieses noch fehlt.

Code-Hervorhebung

Die Syntaxhervorhebung und die Wellenlinien wurden in ReSharper 2022.3 überarbeitet. Aufgrund von Abweichungen in der internen Logik kam es bisher zu einem Konflikt zwischen ReSharper und der Codestilanalyse von Microsoft Roslyn. Dies führte zu überlappenden Syntaxhervorhebungen, der Darstellung derselben Hervorhebung an verschiedenen Stellen oder doppelten Wellenlinien. Die Unterschiede in der Logik, die den meisten dieser Fälle zugrunde lagen, sind nun behoben, und bei den seltenen Ausnahmen werden jetzt Fehler mit klaren Vorschlägen zur Lösung des Konflikts angezeigt.

Sicherheit

Jede Verwendung eines quelloffenen NuGet-Pakets ist mit dem Risiko verbunden, dass Sicherheitslücken in Ihr Projekt eingeschleppt werden. Es gibt zwar von NuGet bereitgestellte externe Tools, um nach solchen Bedrohungen zu suchen, aber es ist viel praktischer, ein solches Tool direkt in Ihrer IDE zu haben, um etwaige Sicherheitslücken bereits in der Entwicklungsphase zu erkennen. Daher bietet ReSharper jetzt eine Erkennung von Abhängigkeiten an, die von Sicherheitslücken betroffen sind. Ab diesem Release werden alle betroffenen Abhängigkeiten in .csproj- und .vbproj-Dateien markiert.

Unterstützung für Visual Studio 2022 ARM64

ReSharper kann jetzt auf Systemen mit ARM-Prozessor in Microsoft Visual Studio integriert werden. Wir gewährleisten eine Erstunterstützung für alle grundlegenden Entwicklungsabläufe außer der Rechtschreibprüfung mit ReSpeller.

Das Installationsprogramm wurde aktualisiert und unterstützt jetzt sowohl x64- als auch ARM64-Prozessoren. Es wird automatisch die zur Prozessorarchitektur Ihres Systems passende Version installiert.

Unterstützung für Windows ARM64

dotPeek, dotMemory, dotTrace und dotCover sowie die Befehlszeilentools von ReSharper unterstützen jetzt Windows ARM64.

Dekompilierer

Der integrierte Decompiler von ReSharper 2022.3 bietet Unterstützung für:

  • als static abstract und static virtual spezifizierte Member in Schnittstellen;
  • generische Attribute;
  • benutzerdefinierte checked-Operatoren;
  • den vorzeichenlosen Rechtsverschiebungsoperator.

IL-Ansicht

Das IL Viewer-Toolfenster kann jetzt Code in verschiedene Ebenen von C#-Sprachkonstrukten dekompilieren. Es stehen zwei C#-Ebenen zur Verfügung: high-level, wobei bestimmte Syntaxkonstrukte mithilfe der neuesten Sprachmerkmale vereinfacht werden, und low-level für den Fall, dass Sie erfahren möchten, wie diese Syntaxkonstrukte ohne „syntaktischen Zucker“ aussehen.

Abhängigkeitsdiagramme

ReSharper kann jetzt Typ- und Projektabhängigkeitsdiagramme im GraphML-Format speichern und importieren. Dabei bleibt die Möglichkeit erhalten, das Diagramm als Code-Map zu verwenden und unkompliziert durch die Abhängigkeiten zu navigieren.

Dynamische Programmanalyse

Die dynamische Programmanalyse (DPA) verfügt über neue Inspektionen, die verschiedene Probleme im Zusammenhang mit der Datenbanknutzung finden können:

  • Lange Befehlsausführungszeiten
  • Zu viele Datenbankverbindungen
  • Zu viele gleichzeitig ausgeführte Datenbankbefehle
  • Befehle, die zu viele Datensätze zurückgeben

Die neuen Inspektionen sind für alle Anwendungen verfügbar, die Entity Framework Core und einen .NET-Datenanbieter für SQL Server verwenden.

C++20-Module

ReSharper C++ 2022.3 bietet experimentelle Unterstützung für C++20-Module. Wir haben die Sprachengine und viele Funktionen in ReSharper C++ aktualisiert, um sie an das neue Kompilierungsmodell anzupassen und benannte Module und Headereinheiten zu unterstützen.

Das ist neu in ReSharper C++ 2022.3

Integration von clang-format

ReSharper C++ 2022.3 bietet eine reibungslose Integration mit clang-format. Sie können jetzt bei der Dateiformatierung zwischen der ReSharper-Formatierungsengine und der eingebauten bzw. einer benutzerdefinierten clang-format-Binärdatei wechseln. ReSharper C++ führt clang-format in einem separaten Prozess aus. Dies gewährleistet eine vollständige Kompatibilität der Formatierung mit dem Industriestandard und ermöglicht eine höhere Performance und eine größere Auswahl an Formatierungsoptionen.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar