ReSharper C++ 2023.2 führt das Refactoring Safe Delete ein, mit dem Sie Symbole ohne Risiko aus Ihrem Quellcode entfernen können. Moderne C++-Projekte profitieren von der Unterstützung mehrerer neuer Sprachmerkmale aus C++20 und C++23, darunter C++23-Standardbibliotheksmodule. Diese Version enthält außerdem den ReSharper AI Assistant, der speziell dafür entwickelt wurde, Sie bei Programmieraufgaben zu unterstützen.
Kostenlose 30-Tage-Testversion verfügbar
AI Assistant ist nicht im Lieferumfang von ReSharper enthalten und muss separat installiert werden. Aktuell gibt es eine Warteliste für die Nutzung von AI Assistant.
In unserer Webhilfe erhalten Sie weitere Informationen zu AI Assistant und zur Installation mit der Toolbox-App oder dem dotUltimate-Installationsprogramm.
ReSharper C++ 2023.2 nutzt den ReSharper-eigenen AI Assistant – einen KI-Chat, der speziell dafür entwickelt wurde, Fragen zur Programmierung zu beantworten und Sie bei der Fehlersuche, dem Refactoring, der Dokumentation und anderen Entwicklungsabläufen zu unterstützen.
Der AI Assistant von ReSharper berücksichtigt die in Ihrem Projekt verwendeten Sprachen und Technologien. Dank dieser Kontextsensitivität sind die Antworten von Anfang an für Ihr Projekt optimiert, sodass Sie Zeit und Mühe sparen.
Zusätzlich können Sie gerne Teile des Quellcodes in Ihren Anfragen zitieren. ReSharper erkennt den gesendeten oder in den Chat eingefügten Code und formatiert ihn korrekt. Das KI-Modell wiederum kann Ihnen die Logik hinter dem Code erklären und Ihnen beim Refactoring, der Problemsuche oder der Dokumentation helfen.
if consteval
ist eine neue Anweisung zur Evaluierung von Konstanten in C++23, die die Idee hinter consteval
und std::is_constant_evaluated()
– ihrerseits seit C++20 verfügbar – weiterentwickelt. Wenn die Auswertung der if consteval
-Anweisung während einer Konstantenauswertung erfolgt, wird die nachfolgende Anweisung ausgeführt. Andernfalls wird der else
-Zweig ausgeführt.
ReSharper C++ unterstützt jetzt if consteval
und bringt einige Inspektionen dafür mit:
consteval if
ist immer konstant.std::is_constant_evaluated
ergibt immer einen konstanten Ausdruck.if
kann durch if consteval
ersetzt werden. ReSharper C++ unterstützt jetzt die benannten Module std
und std.compat
, die mit der C++23-Standardbibliothek eingeführt wurden. Wenn Sie Visual Studio 17.6 oder höher verwenden, können Sie jetzt import std
oder import std.compat
verwenden, um die gesamte Standardbibliothek zu importieren, anstatt einen vorkompilierten Header zu verwenden oder spezielle Standardbibliotheksheader zu inkludieren.
Vor C++23 mussten alle Operatoren nicht-statische Memberfunktionen sein. Aufrufoperatoren werden jedoch häufig mit Funktionsobjekten ohne Member verwendet, und es kann zu effizienterem Code führen, wenn Operatoren in diesem Fall statisch sein dürfen. In C++23 können sowohl operator()
als auch operator[]
statisch sein.
Wir haben intensiv daran gearbeitet, die Unterstützung für C++20-Module zu erweitern und verschiedene Sonderfälle zu lösen, die bei der Modulverwendung in realen Projekten auftreten. Bei der internen Verarbeitung von Modulen verwirft ReSharper C++ jetzt Deklarationen, die beim Kompilieren nicht erreichbar sind, was die Performance von Modulen, die zahlreiche Header in das globale Modulfragment inkludieren, erheblich verbessert.
Darüber hinaus haben wir mehrere Änderungen vorgenommen, um die Unterstützung von Modulen in CMake-Projekten zu verbessern. ReSharper C++ erkennt jetzt .cppm
-Dateien als Modulschnittstellen und bietet experimentelle Unterstützung für Module außerhalb des Projektordners.
Das in C++20 eingeführte Attribut [[no_unique_address]]
zeigt an, dass für ein nicht-statisches Datenmember einer Klasse keine eindeutige Adresse erforderlich ist, sodass der Compiler die Member der Klasse effizienter anordnen kann. ReSharper C++ berücksichtigt jetzt [[no_unique_address]]
bei der Berechnung der Objektgröße.
ReSharper C++ 2023.2 implementiert auch den kürzlich akzeptierten C++20-Fehlerbericht, der die Initialisierung eines char
- oder unsigned char
-Arrays mit einem UTF-8-Zeichenfolgeliteral erlaubt.
ReSharper C++ führt das Refactoring Safe Delete ein, mit dem Sie Symbole ohne Risiko aus Ihrem Quellcode entfernen können. Dieses Refactoring ist für Klassen, Funktionen, Variablen, Enums, Namensräume und sogar Concepts verfügbar.
Um das Refactoring aufzurufen, legen Sie die Einfügemarke auf das zu löschende Symbol und drücken Sie Alt+Entf oder wählen Sie im Menü Refactor This die Option Safe Delete aus.
Bevor ein Symbol gelöscht wird, sucht ReSharper C++ nach dessen Verwendungen und zeigt Ihnen eine Vorschau der Codeänderungen an, sodass Sie sicher sein können, dass alle Löschungen beabsichtigt sind. Wenn Sie versuchen, ein komplexes Element wie eine Klasse oder einen Namensraum zu löschen, prüft ReSharper C++ rekursiv die Verwendungen aller Member des Elements.
Diese Version bietet eine bessere Performance bei der Indizierung von Blueprints. Wenn Sie ein Projekt zum ersten Mal öffnen, indiziert ReSharper C++ alle Ihre Blueprint-Assets, um Funktionen wie die Verwendungssuche zu ermöglichen und die Werte serialisierter Daten direkt im Texteditor anzeigen zu können.
In früheren Versionen von ReSharper C++ wurden diese Assets parallel zum C++-Code indiziert. Dadurch dauerte es länger, bis Sie mit dem Projekt arbeiten konnten. ReSharper C++ 2023.2 indiziert Assets im Hintergrund, nachdem die Indizierung Ihres C++-Codes abgeschlossen ist, sodass Sie ungestört arbeiten können.
Wir haben die Smart-Completion für Wrapper-Typen mit Standard-Zuweisungssemantik verbessert. Zum Beispiel werden bei der Zuweisung an eine Variable vom Typ TEnumAsByte
Enums des zugrunde liegenden Enum-Typs vorgeschlagen.
In Projekten, die Unreal Engine 5.1 verwenden, unterstützen wir nun das Makro UE_INLINE_GENERATED_CPP_BY_NAME
, mit dem Sie generierte Dateien inline in Ihr Modul einbinden können, um die Kompilierungszeit zu verkürzen.
Durch eine Verbesserung der Completion für abhängigen Code erhalten Sie jetzt Completion-Vorschläge, wenn der Typ durch ein Concept oder einen Trait beschränkt ist. ReSharper C++ berücksichtigt jetzt die standardmäßigen Traits vom Typ std::is_same/std::is_base_of
, ihre _v
-Wert-Aliase, die entsprechenden Concepts std::same_as/std::derived_from
sowie den Trait TIsSame
der Unreal Engine.
Um hilfreichere Completion-Vorschläge anbieten zu können, extrahiert ReSharper C++ jetzt Typ- und Wertvorgaben aus requires
-Klauseln, if constexpr
und SFINAE.
Zwei neue Kontextaktionen helfen Ihnen, eine Template-Parameter-Beschränkung in eine requires
-Klausel zu verschieben und eine requires
-Klausel in eine Template-Parameter-Beschränkung umzuwandeln.
ReSharper C++ kennzeichnet rekursive Aufrufe in der Randleiste, damit sie besser zu erkennen sind.
Die Code-Completion filtert jetzt reservierte Bezeichner heraus und schlägt sie nur nach _
vor. Dadurch müssen Sie nicht mehr durch die lange Liste der Vorschläge aus der Standardbibliothek blättern, wenn Sie diese nicht benötigen.
In ReSharper C++ 2023.1 haben wir Syntaxhervorhebung und Formatierung für Makroersetzungen im Quick-Documentation-Popup sowie in Tooltips eingeführt. In Version 2023.2 wurden diese Verbesserungen auch auf Makrodefinitionen und Parameter-Info-Hinweise in der Code-Completion erweitert.
Wir haben die Evaluierungsengine verbessert, um die aggregierte Initialisierung von constexpr
-Arrays zu unterstützen.
Die Kompatibilität mit den Compilern GCC und Clang und den Standardbibliotheken libc++/libstdc++ wurde verbessert. Dies umfasst eine Unterstützung für weitere Builtins wie __integer_pack
, __is_convertible/__is_nothrow_convertible
sowie Updates für bereits unterstützte Builtins.
Wenn Sie die Richtung des Parameters mit dem Attribut [in]
, [in,out]
oder [out]
des param-Befehls von Doxygen angeben, werten die Tooltips diese Informationen in Ihrem Kommentar aus.
ReSharper C++ 2023.2 bietet eine neue Inspektion, die redundante Dereferenzierungen und address-of-Operatoren erkennt. Mit mehreren Quick-Fixes können Sie den Memberzugriff vereinfachen und redundante Operatoren entfernen.
Eine weitere neue Inspektion erkennt redundante Template-Argumente, die mit dem entsprechenden Standard-Template-Argument übereinstimmen und daher weggelassen werden können.
Eine neue Kompatibilitätsinspektion warnt Sie vor Vorausdeklarationen von Enums im C-Stil ohne zugrundeliegenden Typ. Diese sind laut C++-Standard nicht zulässig, werden aber von MSVC akzeptiert, was zu Portierungsproblemen führen kann.
ReSharper C++ färbt jetzt die diagnostischen Präprozessoranweisungen #error
und #warning
entsprechend ihrer Severity-Stufe ein.
Die mitgelieferte clang-tidy-Programmdatei wurde auf Clang 16 aktualisiert und enthält neue Prüfungen und Fixes.
MSVC kann je nach Wert des Compiler-Arguments /Zc:preprocessor
entweder den traditionellen oder den neuen standardkonformen Präprozessor verwenden. ReSharper C++ liest jetzt den Wert dieses Arguments aus den Projekteigenschaften aus und passt das Verhalten des integrierten Präprozessors entsprechend an.
ReSharper C++ 2023.2 enthält mehrere Verbesserungen für Go to declaration, um eine einheitlichere und einfachere Codenavigation ohne zusätzliche Schritte zu ermöglichen:
typedef
- oder Typalias-Deklaration, statt ein Menü mit allen Deklarationen anzuzeigen. #include
-Pfad anwenden, wird der Ordner geöffnet. Außerdem ist Type of symbol jetzt auch für nicht deklarierende Symbole verfügbar. Die Funktionsweise ist in diesen Fällen ähnlich wie bei Go to declaration.
Bei der Generierung von Dokumentationskommentaren passt ReSharper C++ jetzt die Kommentarvorlage an den Kommentarstil im Editor an. Bei /**
generiert die Eingabeunterstützung einen Kommentar im Stil /** */
, und bei ///
wird ein Kommentar im Stil ///
erstellt.
Dieses Release enthält verschiedene Verbesserungen für die Formatierung von Bitfeld-Membern. Die Optionen zum Ausrichten von Initialisierern und Deklarationsnamen in Spalten unterstützen jetzt Bitfelder. Außerdem gibt es zwei neue Formatierungseinstellungen für das Leerzeichen vor und nach dem Doppelpunkt in Bitfeld-Deklarationen sowie für die Ausrichtung von Bitfeldgrößen in Spalten.
Mit einer neuen Eingabehilfe-Option können Sie die Generierung von Dokumentationskommentaren ausschalten, um Konflikte mit dem integrierten Generator von Visual Studio zu vermeiden (ReSharper | Options | Environment | Editor | Behavior | C++, C, HLSL | Generate documentation comments).
Wir haben außerdem die integrierte clang-format-Programmdatei aktualisiert und eine Korrektur am clang-format-Engine vorgenommen, damit ein Zeilenumbruch am Dateiende nicht mehr entfernt wird.
Unter Das ist neu in ReSharper finden Sie Informationen zu weiteren Änderungen in diesem Release. Zu den Neuerungen in ReSharper zählt zum Beispiel der prädiktive Debugger, der alle möglichen Zustände berechnet, die durch die Ausführung eines Programms entstehen können, ohne dass der Code tatsächlich ausgeführt werden muss.
Kostenlose 30-Tage-Testversion verfügbar