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.
Kostenlose 30-Tage-Testversion verfügbar
Wir sind dabei, die grundlegende Unterstützung für die neuesten Sprachmerkmale von C# 11 fertigzustellen:
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 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.
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.
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).
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:
override
enthalten auch Schnittstellen-Member, sodass Sie abstrakte oder als virtual static
gekennzeichnete Member unkompliziert implementieren können. >>>
) 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
dotPeek, dotMemory, dotTrace und dotCover sowie die Befehlszeilentools von ReSharper unterstützen jetzt Windows ARM64.
Der integrierte Decompiler von ReSharper 2022.3 bietet Unterstützung für:
static abstract
und static virtual
spezifizierte Member in Schnittstellen; checked
-Operatoren; 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.
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.
Die dynamische Programmanalyse (DPA) verfügt über neue Inspektionen, die verschiedene Probleme im Zusammenhang mit der Datenbanknutzung finden können:
Die neuen Inspektionen sind für alle Anwendungen verfügbar, die Entity Framework Core und einen .NET-Datenanbieter für SQL Server verwenden.
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.
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.
Kostenlose 30-Tage-Testversion verfügbar