Neuerungen in ReSharper 2024.1

In ReSharper 2024.1 haben wir die C#-Unterstützung weiter verbessert. Sie erhalten mehr Vorschläge für die Umwandlung in Collection-Ausdrücke, und wenn eine Collection während der Iteration in einer foreach-Schleife modifiziert wird, werden Sie gewarnt. Die Razor-Unterstützung löst jetzt Referenzen in den Direktiven @addTagHelper und @removeTagHelper auf, und die Nutzungserfahrung bei der Bearbeitung benutzerdefinierter Namensregeln wurde erheblich verbessert.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar

C#-Unterstützung

Mehr Umwandlungen in Collection-Ausdrücke

Mehr Umwandlungen in Collection-Ausdrücke

Der Umfang der Codekonstrukte, bei denen die IDE eine Umwandlung in Collection-Ausdrücke gemäß C# 12 anbietet, wurde erweitert, unter anderem auf leere Arrays und die Deklaration und Initialisierung von ImmutableArray.

Analyse Collection was modified

Analyse Collection was modified

Wir haben eine neue Inspektion namens Possible 'System.InvalidOperationException: Collection was modified' hinzugefügt, die Sie warnt, wenn eine Collection während der Iteration in foreach-Schleifen geändert wird, da solche Änderungen zu einer Laufzeitausnahme führen können. Die Analyse erkennt Fälle, in denen die Schleife nach Änderung der Collection verlassen wird, sodass in diesen Fällen keine Warnung ausgelöst wird.

Die Inspektion wird mit einem entsprechenden Quick-Fix geliefert, mit dem Sie dieses Problem sofort lösen können.

Update für Generate | Formatting Members

Update für Generate | Formatting Members

Mit Generate | Formatting Members können Sie Standard-Codebausteine generieren, um die Methode ToString() zu überschreiben und eine sinnvolle Textdarstellung Ihres Typs zurückzugeben. Ab Version 2024.1 unterstützt dieses Feature weitere Typen, darunter ISpanFormattable, IUtf8SpanFormattable und IFormattable.

Verbesserte Unterstützung für entsorgbare Ressourcen in asynchronen Methoden

Verbesserte Unterstützung für entsorgbare Ressourcen in asynchronen Methoden

  • Verbesserungen für die Annotation [MustDisposeResource]: Die C#-Codeanalyse überprüft jetzt, ob Ressourcen, die von asynchronen Methoden zurückgegeben werden, einschließlich solcher, die in Task<IDisposable> und ValueTask<IDisposable> eingeschlossen sind, korrekt entsorgt werden, um zu vermeiden, dass der Task selbst entsorgt wird.
  • Task-ähnliche Rückgabewerte: In Version 2024.1 überprüft die korrekt durchgeführte Analyse für Task-ähnliche Rückgabewerte, ob die mit await erwartete Ressource auf Entsorgung geprüft wird. Die Analyse schließt auch Ressourcen ein, die mit .ConfigureAwait(...), .AsTask() oder .Result abgerufen werden.
Updates für das Refactoring Change Signature

Updates für das Refactoring Change Signature

Wir haben am Refactoring Change Signature unter anderem folgende Verbesserungen vorgenommen:

  • Das Refactoring unterstützt jetzt Deconstruct-Methoden. Sie können Parameter hinzufügen, entfernen, umstellen und umbenennen, und diese Änderungen werden sowohl auf die Methodendeklaration als auch auf deren Verwendungen angewendet.
  • Für Typparameter ist Code-Completion verfügbar. Dies bedeutet zum Beispiel, dass Sie beim Angeben des Typs für eine List<> die Code-Completion verwenden können, um unkompliziert den gewünschten Typ – etwa int – auszuwählen.
  • Typ-Namespaces werden beim Hinzufügen oder Aktualisieren von Parametern automatisch gekürzt. Dies trägt dazu bei, dass der Code durch das Refactoring übersichtlicher und einfacher wird. Wenn Sie zum Beispiel den Typ System.Collections.Generic.List<System.Int16> im Dialog Change Signature angeben, wird er im resultierenden Code automatisch zu List<short> gekürzt.
  • Das Refactoring unterstützt jetzt mehr Sprachmerkmale aus den neuesten C#-Versionen, zum Beispiel die Modifikatoren in und ref readonly sowie record-Typen.
Updates für das Refactoring Make Static

Updates für das Refactoring Make Static

In diesem Release unterstützt das Refactoring Make Static Primärkonstruktor-Parameter. Sie erscheinen in der Liste Introduce parameters und werden durch ein eigenes Symbol gekennzeichnet, damit Sie sie leichter unterscheiden können. Dieses Refactoring ist auch für lokale Funktionen verfügbar.

Unterstützung für die Bibliothek protobuf-net

Die Codeanalyse unterstützt jetzt das Attribut ProtoContract und das Enum ImplicitFields aus der Bibliothek protobuf-net. Beide können verwendet werden, um Member zu kennzeichnen, die implizit für die Serialisierung verwendet werden. Somit werden solche Member auch nicht mehr mit der Warnung unused member als ungenutzt gekennzeichnet.

Razor-Unterstützung

Auflösen von Referenzen in @addTagHelper und @removeTagHelper

Auflösen von Referenzen in @addTagHelper und @removeTagHelper

ReSharper löst jetzt Assembly-Namen auf, auf die in @addTagHelper- und @removeTagHelper-Direktiven innerhalb Ihrer Razor-Views verwiesen wird. Dadurch können Sie die Code-Completion nutzen, nach Verwendungen suchen und einfacher im Code navigieren.

ReSharper betrachtet jetzt alle unaufgelösten Assembly-Namen als Fehler und hebt sie rot hervor, um auf sie aufmerksam zu machen.

C++-Unterstützung

C++-Unterstützung

Bei der C++-Unterstützung haben wir unter anderem die folgenden wichtigen Verbesserungen vorgenommen:

  • Die überarbeitete Implementierung von C++20-Modulen verbessert die Performance und bietet Unterstützung für interne Modulpartitionen.
  • Change Signature bietet neue Möglichkeiten, darunter das Ändern eines Parametertyps mit den Optionen Zeiger, Referenz oder Wert.
  • Call Tracking unterstützt jetzt ausgehende Aufrufketten.
  • Sie können jetzt den Stil der generierten Dokumentationskommentare unkompliziert anpassen. Außerdem sind für Dokumentationskommentare Grammatikinspektionen verfügbar.
  • Das Slate-UI-Framework der Unreal Engine wird jetzt unterstützt.

Erfahren Sie mehr über die C++-Updates: Das ist neu in ReSharper C++ 2024.1.

Performance

Modus für hohe Ressourcenauslastung bei projektmappenweiter Analyse

Modus für hohe Ressourcenauslastung bei projektmappenweiter Analyse

Wir arbeiten aktiv an der Optimierung von projektmappenweiten Analysen im Modus mit hoher Ressourcennutzung, der die Analysedauer durch eine effizientere parallele CPU-Nutzung erheblich verkürzt. Wir haben die Arbeitsspeicher-Allokation bei Codeanalyse-Aktivitäten verbessert, um den Zeitbedarf der Garbage Collection zu minimieren. Im Zuge der laufenden Optimierung wären wir Ihnen dankbar, wenn Sie diesen Modus aktivieren und uns Ihre Erfahrungen mitteilen könnten.

Schnelleres Rename-Refactoring

Sie können jetzt schneller und effizienter Elemente in Ihrem Code umbenennen. Diese Änderung wirkt sich auch auf andere ReSharper-Kernkomponenten aus und verbessert die Performance mehrerer Funktionen, darunter Find Usages.

Schnelleres Move to Another Type-Refactoring

Die Performance des Refactorings Move to Another Type für statische Member wurde beim Umgang mit großen Klassen erheblich verbessert.

Codeformatierung

Verbesserte Nutzungserfahrung für benutzerdefinierte Namensregeln

Die Änderungen sollten die Arbeit mit erweiterten Namensregeln und die Einhaltung von aus EditorConfig-Dateien importierten Regeln erleichtern.

Einstellung „Remove whitespace on blank lines“

Einstellung Remove whitespace on blank lines

Mit dieser neuen Formatierungseinstellung können Sie festlegen, ob Leerzeichen in leeren Zeilen beibehalten oder entfernt werden sollen.

Dekompilierer

Neues „Assembly Diff“-Toolfenster

Neues Assembly Diff-Toolfenster

Das Update 2024.1 führt das neue Assembly Diff-Toolfenster in ReSharper ein. Damit gehen einige Änderungen einher:

  • Die Vergleichsfunktion für Assemblies, NuGet-Pakete, Ordner und .zip-Archive wurde vom Assembly Explorer in das Assembly Diff-Toolfenster verlegt.
  • Der Diff-Moduswähler und die Schaltflächen Compare und Diff Options wurden in die Actions-Leiste des Assembly Diff-Toolfensters verlegt.
Unterstützung für das WebCIL-Paketformat

Unterstützung für das WebCIL-Paketformat

Der Decompiler von ReSharper unterstützt jetzt das WebCIL-Paketformat für WebAssemblies. Die Unterstützung umfasst:

  • Dekompilierung für WebCIL.
  • Betrachtung von .wasm-Dateien im Assembly Explorer.
  • Metadaten-Unterstrukturen für WASM-Knoten im Assembly Explorer, einschließlich WASM- und WebCIL-Header.

MAUI-Unterstützung in dotTrace, dotMemory und dotCover dotUltimate

dotTrace, dotMemory und dotCover unterstützen Desktop-MAUI-Anwendungen und .NET-macOS-Anwendungen jetzt auch in Visual Studio.

Unterstützte Zielframeworks:

  • MAUI Windows (in dotTrace, dotMemory, dotCover): net8.0-windows, net7.0-windows
  • MAUI Mac (nur in dotTrace): net8.0-maccatalyst, net7.0-maccatalyst
  • macOS-Anwendungen (in dotTrace und dotMemory): net8.0-macos, net7.0-macos

Klicken Sie hier für weitere Informationen über Einschränkungen und die Verfügbarkeit von Profiling-Modi.

Unterstützung für MAUI-Projekte ist auch in den Standalone-Versionen dieser .NET-Tools verfügbar.

Unterstützung für Frozen Object Heap dotUltimate

Das eigenständige Profiling-Tool dotMemory unterstützt jetzt den Frozen Object Heap – ein Feature, das mit dem .NET 6 SDK im Zuge von Performance-Verbesserungen für die Garbage Collection eingeführt wurde.

FOH weist unveränderlichen Objekten einen speziellen Speicherbereich zu. Diese Objekte werden nach der Allokation nicht geändert und unterliegen nicht der Garbage Collection. Durch die Unterstützung dieser Technologie kann dotMemory eine detailliertere Analyse des von unveränderlichen Objekten genutzten FOH-Speichers durchführen und so die Optimierung der Speichernutzung fördern.

Befehlszeilentools

Das SARIF-Format wird zum Standard

Das SARIF-Format wird zum Standard

Seit der Version 2024.1 ist das Standardausgabeformat von InspectCode SARIF. Das XML-Format wird bald nicht mehr verwendet. In der aktuellen Version sind die Ergebnisse noch im XML-Format verfügbar, wenn der Parameter -f="xml" verwendet wird.

Verschiedenes

„Out-of-process“-Refactoring

Wir haben ein internes Refactoring der Textsteuerelemente abgeschlossen. Dieses Refactoring ist Teil unserer Bemühungen um eine „Out-of-process“-Ausführung von ReSharper und soll die Texteingabe und verwandte Aspekte der Editorperformance sowohl in ReSharper als auch in Rider verbessern. Das neueste Statusupdate über unsere Fortschritte bei der „Out-of-process“-Ausführung von ReSharper finden Sie hier.

Erweiterungsmanager

Der Plugin-Feed für den JetBrains Marketplace hat einen neuen Filtermechanismus erhalten, der auf Kompatibilitätsprüfungen basiert. Dies bedeutet, dass inkompatible Plugins nicht mehr im Erweiterungsmanager von ReSharper angezeigt werden.

Herunterladen

Kostenlose 30-Tage-Testversion verfügbar