Das ist neu in ReSharper C++ 2023.3

ReSharper C++ 2023.3 bietet eine neue, integrierte Grammatik- und Rechtschreibprüfung, Code-Completion und Find Usages für inaktiven Code, Updates für C und C++, HLSL-Unterstützung und noch einiges mehr. ReSharper C++ 2023.3 profitiert außerdem von einem großen Update des JetBrains AI Assistant.

Vorschauphase von AI Assistant abgeschlossen Allgemein verfügbar

JetBrains AI Assistant ist jetzt allgemein verfügbar und bietet eine Reihe von neuen und verbesserten Funktionen, die Ihre Produktivität steigern. Zu unseren neuesten Verbesserungen zählen ein stärkerer Projektbezug bei KI-Aktionen und eine Prompt-Bibliothek.

Sie können AI Assistant in ReSharper C++ als Zusatzfunktion mit einem Abonnement für den JetBrains AI Service verwenden.

Updates für HLSL und Unreal Engine

Mit HLSL 2021 wurden C++-ähnliche Template-Funktionen und Datentypen eingeführt. Das neueste Update für ReSharper C++ bietet vollständige Unterstützung für HLSL-Templates.

ReSharper C++ 2023.3 unterstützt den in HLSL integrierten Typ RayQuery und schlägt in der Code-Completion die entsprechenden Flags vor.

Eine neue Inspektion hilft Ihnen, eine der häufigsten Fallen in Verbindung mit dem Hilfsmakro AddDynamic zu umgehen. Sie erhalten jetzt eine Warnung, wenn eine dynamische Delegatfunktion nicht mit dem Makro UFUNCTION markiert ist.

Wenn Sie immer noch gelegentlich Boilerplate-Code schreiben, denken Sie daran, dass Sie mit Alt+Einfg automatisch häufig verwendete Typmember generieren können. In ReSharper C++ 2023.3 haben wir die Generierung von Hash-Funktionen an die Konventionen der Unreal Engine angepasst.

Wenn Sie an einer eigenständigen, plattformübergreifenden IDE für die Unreal-Engine-Entwicklung interessiert sind, sollten Sie sich Rider ansehen. Die Unreal-Engine-Unterstützung in Rider und ReSharper C++ ist identisch, und Sie können die gleichen Verbesserungen in Rider 2023.3 erwarten.

C- und C++-Unterstützung

Wenn Sie einmal überprüfen müssen, ob ein bestimmtes Attribut im aktuellen Standard oder in der aktuellen Compiler-Version verfügbar ist, dann ist die Feature-Testing-Funktion von C++20 genau richtig für Sie. Mit __has_cpp_attribute(operand) können Sie in Präprozessor-Bedingungen testen, ob der Compiler das vom Operanden referenzierte Attribut erkennt. ReSharper C++ geht jetzt korrekt mit __has_cpp_attribute um und verbessert die Unterstützung von Attributannotationen in C++-Standardbibliotheken.

Wir haben Unterstützung für das Pack-Pragma eingeführt, das mit dem Schlüsselwort __pragma verwendet wird. Die Syntax __pragma (pack) wird manchmal innerhalb von Makrodefinitionen verwendet, da es nicht möglich ist, #pragma-Direktiven innerhalb einer Makrodefinition zu verwenden. In solchen Fällen berechnet ReSharper C++ jetzt die Größe gepackter Strukturen korrekt, sodass Sie sich auf die Ergebnisse der Codeanalyse verlassen können.

ReSharper C++ führt Unterstützung für mehrere C-Features ein:

  • Den restrict-Typqualifizierer aus C99, der in Zeigerdeklarationen verwendet werden kann.
  • Typdeduktion, constexpr und nullptr aus C23.

Wir haben außerdem Unterstützung für mehrere neue Clang-Intrinsics wie __is_const(), __is_member_pointer() usw. eingeführt, damit ReSharper C++ mit plattformübergreifendem Code besser umgehen kann.

Für die plattformunabhängige C- und C++-Entwicklung können Sie eine frühe Vorschauversion der eigenständigen IDE CLion Nova ausprobieren. Sie basiert auf ReSharper C++ und ist in dieser Entwicklungsphase vollkommen kostenlos nutzbar – registrieren Sie sich, beginnen Sie mit der Programmierung und senden Sie uns Ihr Feedback!

Grammatik- und Rechtschreibprüfung

JetBrains Grazie ist der neue integrierte Grammatik- und Rechtschreibprüfer von ReSharper. Grazie unterstützt über 20 natürliche Sprachen und erkennt Sprachfehler in den von ReSharper unterstützten Programmiersprachen (C#, C++, VB.NET), Markup-Sprachen (HTML, XML, XAML) und Kommentaren. Um weitere natürliche Sprachen zu Grazie hinzuzufügen, öffnen Sie in ReSharper das Menü Options | Grammar and Spelling | General.

Bitte beachten Sie, dass die Grammatikprüfung in doxygen-Kommentaren derzeit nicht verfügbar ist.

Arbeiten mit inaktivem Code

Bei plattform- oder konfigurationsspezifischem Code kommt es oft vor, dass man inaktive Codeblöcke in bedingten Präprozessorzweigen bearbeiten muss. Bisher schlug die Code-Completion in inaktivem Code nur Makros vor. In ReSharper C++ 2023.3 wurde die Code-Completion in diesen Szenarien verbessert, indem Symbole aus dem globalen Gültigkeitsbereich einbezogen werden.

Find Usages findet jetzt mögliche Verwendungen in inaktivem Code und in Makrokörpern. Um diese Verwendungen zu finden, musste man bisher mit Find Usages Advanced nach Textvorkommen suchen. Die Ergebnisse von Find Usages enthalten jetzt standardmäßig mögliche Verwendungen in Makrokörpern und inaktivem Code. Diese Verwendungen sind in separaten Abschnitten zusammengefasst, um sie von Verwendungen im aktiven Code zu unterscheiden.

Codeanalyse

Sie können ReSharper-spezifische C++-Attribute verwenden, um die Treffsicherheit und die Ergebnisse von ReSharper-Analysen zu verbessern. In ReSharper C++ 2023.3 haben wir das Präfix [[jetbrains::...]] als Ergänzung zu [[rscpp::...]] für die bestehenden Attribute [[jetbrains::format]], [[jetbrains::guard]] und [[jetbrains::has_side_effects]] eingeführt.

Mit dem neuen Attribut [[jetbrains::pass_by_value]] können Sie die Inspektion Pass value by const reference für Funktionsparameter unterdrücken. Mehr erfahren.

Wir haben einige Inspektionen für die nicht korrekte Verwendung des Schlüsselworts export in C++20-Modulen eingeführt. ReSharper C++ schlägt jetzt vor, die Export-Deklaration zu entfernen, wenn sie sich innerhalb einer anderen Export-Deklaration befindet oder wenn die Deklaration nicht Teil einer Modulschnittstelleneinheit ist und nicht exportiert werden kann. Die IDE empfiehlt Ihnen außerdem, export zu verschieben, wenn Sie versuchen, die Export-Deklaration als Template zu definieren, anstatt die Template-Deklaration zu exportieren.

Die mitgelieferte Clang-Tidy-Programmdatei wurde auf Clang 17 aktualisiert und enthält damit Updates aus dem neuesten LLVM-Release.

Einige Clang-Tidy-Prüfungen geben zusätzlich zum Warntext weitere Informationen aus. ReSharper C++ zeigt jetzt diese zusätzlichen Hinweise im Tooltip an.

Eine neue Inspektion warnt vor der Verwendung von Literalen mit mehreren Zeichen. Sie werden bedingt durch implementierungsdefinierte Werte unterstützt und sollten in portierbarem Code mit Vorsicht verwendet werden.

ReSharper C++ schlägt jetzt einen Quick-Fix vor, um redundante Bedingungsoperatoren zu entfernen und ternäre Ausdrücke zu vereinfachen.

Programmierunterstützung

Das mit Alt+Einfg aufrufbare Generate-Menü hilft Ihnen, Standard-Codebausteine in Sekundenschnelle zu erstellen. In ReSharper C++ 2023.3 haben wir die Liste um eine neue Aktion zum Generieren eines Destruktors erweitert.

Wenn die Aktion in einer polymorphen Klasse aufgerufen wird, verwendet sie die Syntaxstil-Einstellungen, um die erforderlichen Spezifizierer virtual und/oder override einzufügen. Sie können den Stil des generierten Destruktorkörpers auf der Optionsseite Code Editing | C++ | Code Generation konfigurieren.

Mit den Direktiven #pragma region und #pragma endregion können Sie einen faltbaren Codeblock definieren. Ähnlich wie bei anderen paarweisen Direktiven können Sie jetzt zwischen den beiden hin und her springen, indem Sie auf einer #pragma-Direktive oder einem neuen Inlay-Hinweis mit dem Regionsnamen die Aktion Go to Declaration aufrufen.

Darüber hinaus können Sie im Fenster File Structure jetzt unkompliziert Regionen falten und zu den entsprechenden Codeblöcken navigieren.

In C-Code sollte in der Parameterliste einer Funktion mit void angegeben werden, dass die Funktion keine Argumente entgegennimmt. ReSharper C++ behält jetzt diese spezielle Verwendung von void bei, wenn Sie die Refactorings Extract method oder Change signature aufrufen, eine Definition für eine Funktion generieren oder eine neue Funktion aus einer Verwendung erstellen.

Inlay-Hinweise für Referenzen haben jetzt einen separaten Text [>>], damit Sie Forwarding-Referenzen auf einen Blick erkennen können.

Mit der neuen Aktion Generate inline definitions können Sie problemlos mehrere Funktionskörper gleichzeitig erzeugen. Ähnlich wie die bestehende Aktion Generate definitions ist die neue Aktion verfügbar, wenn ein Klassenname oder mehrere Funktionsdeklarationen im Editor ausgewählt werden.

Wenn Sie die Refactorings Introduce variable oder Introduce field auf einen verschachtelten Ausdruck anwenden, bietet Ihnen ReSharper C++ jetzt die Möglichkeit, den Zielausdruck explizit auszuwählen, anstatt automatisch den äußersten zu verwenden.

Um die Codenavigation zu verbessern, werden jetzt Symbole, die aus Makroersetzungen stammen, im Go to-Dialog und im File Structure-Fenster ausgeblendet. Dies ist hilfreich, wenn beim Expandieren von Makros viele Hilfssymbole eingeführt werden, wie das zum Beispiel bei der Deklaration von Testfällen in gängigen Unit-Test-Frameworks der Fall ist.

Codeformatierung

ReSharper C++ 2023.3 führt mehrere neue Formatierungsoptionen ein:

  • Zeilenumbruch vor -> bei nachgestellten Rückgabetypen.
  • Zeilenumbruch nach -> bei nachgestellten Rückgabetypen.
  • Leerzeichen in leeren Blöcken.
  • Zulässigkeit von Kommentaren nach {.

Wir haben außerdem die integrierte clang-format-Programmdatei auf Clang 17 aktualisiert und Unterstützung für die clang-format-Einstellung InsertNewlineAtEOF implementiert, sowohl beim Importieren von Formatierungseinstellungen aus einer .clang-format-Konfigurationsdatei als auch bei der Verwendung von clang-format anstelle des eingebauten Formatierungsmoduls.

Unter Das ist neu in ReSharper finden Sie Informationen zu weiteren Änderungen in diesem Release.