ReSharper C++ 2024.2 の新機能

ReSharper C++ 2024.2 では、新しい C++23 機能の実装、型レイアウトに関する情報によるツールチップの充実化、および Rename(名前の変更)リファクタリングへのいくつかの改善が行われています。ReSharper C++ 2024.2 では Unreal Engine 開発者向けに構造体トレイトのサポートが提供されており、基本メソッドへの呼び出しが欠落していることを検出する新しいインスペクションが追加されています。

ダウンロード

無料 30 日間体験版をご利用可能です

C++23 のサポート

ReSharper C++ 2024.2 では、多次元添字演算子のサポートが追加されています。複数の引数を持つ operator[] を使用することで、多次元のコンテナーとビューのサポートを改善できます。

ReSharper C++ が既存の #ifdef および #ifndef ディレクティブを補完する C++23/C23 の #elifdef および #elifndef プリプロセッサディレクティブも理解するようになりました。

[[assume(<expr>)]] は C++23 の新しい属性で、引数式を使用してオプティマイザーに追加情報を提供するための移植性のある手段を追加するものです。ReSharper C++ がこの引数を解析し、その内部ですべての通常のコードインテリジェンス機能をサポートするようになりました。

Unreal Engine

ReSharper C++ が Unreal Engine の構造体トレイトを認識するようになりました。構造体トレイトでアノテーションされた構造体では、ReSharper C++ が必要なメソッドが存在することを確認し、欠落している場合にはそれを生成します。

新しいインスペクションは基本メソッド(特に BeginDestroy メソッドと GetLifetimeReplicatedProps メソッド)への呼び出しの欠落を検出します。対応するクイックフィックスを使用すると、必要な Super 呼び出しが挿入されます。

IOnlineSubsystem::Get() の使用箇所にフラグを立て、その使用箇所を Online::GetSubsystem(this->GetWorld()) に置換するインスペクションも新たに追加されています。

Unreal Engine 開発向けのスタンドアロン型クロスプラットフォーム IDE にご興味がありましたら、Rider をぜひご検討ください。Rider と ReSharper C++ での Unreal Engine のサポートは同等であるため、Rider 2024.2 アップデートと同じ改善を期待できます。

型レイアウト

クイック情報ツールチップに型レイアウトに関する情報が含まれるようになりました。クラスかクラスフィールドにマウスポインターを合わせると、そのサイズとアライメントを確認できます。

クラスフィールドにマウスポインターを合わせると、オブジェクトの開始位置からのフィールドのオフセットとフィールドの後に追加されたパディングも確認できます。

名前の変更に関する改善点

ファイル名を変更する際に、ReSharper C++ が同じ名前を持つ関連ファイルの名前を変更する新しいオプションを提供するようになりました。たとえばヘッダーファイルの名前を変更する場合、そのヘッダーを含む .cpp ファイルの名前も変更されます。

もう 1 つのファイル名変更オプションでは、ファイル内にある型の名前を新しいファイル名と一致するように自動的に変更できます。

最後に付け加えますが、ファイル内の名前空間の名前を一致する名前に変更する場合、それを含むファイルの名前を自動的に変更するオプションも追加されています。

コード解析

バンドルの clang-tidy バイナリを Clang 18 にアップグレードし、最新の LLVM リリースの 新しいチェックと改善を反映しました。

2024.1 アップデートで追加された NOLINT コメントのサポートと同様に、ReSharper C++ が include-what-you-use の pragma を認識して Possible unused #include directive(使用されていない可能性のある #include ディレクティブ)インスペクションを抑止できるようになりました。

ソースまたはターゲットのいずれかの型が char または std::byte へのポインターになっている変換でエラーが発生した際に reinterpret_cast を使用する修正を追加しました。

その他

Why is ReSharper suggesting this?(ReSharper がこれを提案する理由)インスペクションメニューアクションがコードインスペクションに関連する C++ Core Guidelines にリンクするようになりました。

Find Results(結果の検索)ウィンドウで Base method call(基本メソッド呼び出し)フィルターを使用することで、基本メソッドへの呼び出しを使用箇所リストから除外できるようになりました。

ReSharper C++ に非同期入力が実装されました。これは ReSharper を Visual Studio のプロセス外で実行させ、そのパフォーマンスを改善する継続的な取り組みのひとつです。JetBrains の社内テストでは、非同期入力を有効にすることで入力操作が大幅にスムーズになることが示されています。

ReSharper C++ では Visual Studio の CMake プロジェクトとの互換性も改善されています。その結果、複数の重要な問題が解決され、コーディング時のパフォーマンスが改善されています。

このリリースで導入されたその他の変更点については ReSharper の新機能をご覧ください。

ダウンロード

無料 30 日間体験版をご利用可能です