ReSharper C++ 2025.2 の新機能

ReSharper C++ 2025.2 では、最近になって最終承認された C++26 標準の初期の言語機能セットがサポートされるようになりました。 #if でブロック化されたコードを編集する際、アクティブなビルド構成を切り替えなくてもコーディング支援機能を全面的に使用できるようになっています。 このリリースでは、ReSharper のほとんどの作業を別のプロセスに移動する待望の「アウトプロセス」モードの最初のパブリックプレビューも提供しています。

言語機能

ReSharper C++ 2025.2 では、最近になって最終承認された C++26 言語標準のサポートを開始しています。 最新のリリースでは、以下の新しい C++ の機能をサポートしています。

  • 可変引数の friend 宣言: テンプレートパラメーターパック内のすべてのクラスを friend に指定できます。
  • プレースホルダー変数: 変数名に _ を使用することで、暗黙的に [[maybe_unused]] 属性を適用できます。
  • = delete("reason"): より適切なエラー診断を行うため、delete 対象の関数にオプションのメッセージを追加できます。
  • 構造化バインディングの属性: 宣言全体だけでなく、個別の構造化バインディングにも属性を指定できます。

C 開発者を想定し、ReSharper C++ で C11 の _Atomic 型、C23 標準の _BitInt(N) および 10 進浮動小数点型の接尾辞をサポートするようにしました。

非アクティブなコードの操作

複数のプラットフォームを対象に開発している方や、複雑なシェーダーを作成している方は、現在のビルド構成で非アクティブなコードを編集しようとする際のいら立ちを理解できるかと思います。 ReSharper C++ 2025.2 では、そのような感情を抱くことがなくなります。

ReSharper が #if でブロック化されたコードを処理する方法を根本から改善しました。 コーディング支援機能一式を非アクティブなプリプロセッサブロックで使用できるようになりました。 作業を中断してプロジェクトの設定を切り替えなくても、複数の異なるプラットフォームやビルド構成を横断してコードのリファクタリング、移動操作、編集を行えます。

Out-of-Process(アウトプロセス)モード パブリックプレビュー

ReSharper 2025.2 は、ReSharper を Microsoft Visual Studio のアウトプロセスで実行できる最初の安定版リリースです。 この待望のアーキテクチャ変更により、ReSharper のプロセスを Visual Studio から分離し、今後のさらなる安定性向上とパフォーマンス向上の基盤を築くことができました。

Out-of-Process モードに切り替えるには、ReSharper の Options | Environment | Products & Features(オプション|環境|製品と機能) へ移動し、Run ReSharper in separate process(ReSharper を別のプロセスで実行する) オプションを選択してください。 変更を適用した後、IDE を再起動することなく ReSharper を再初期化するには、Save and restart(保存して再起動)ボタンをクリックしてください。

コーディング支援

グローバル定数を参照する識別子のハイライトに新しい色カテゴリを使用し、そのような識別子と通常の変数を視覚的に区別できるようになりました。

ReSharper C++ 2025.2 は、OpenMP の #pragma ディレクティブに含まれる変数参照を認識します。 そのため、そのような参照が移動操作の機能でサポートされ、Find Usages(使用箇所の検索)で検出され、Rename(名前の変更)リファクタリング時に更新されるようになっています。

Parameter info(パラメーター情報)がマクロ引数内の関数呼び出しに対して呼び出された際、関数のシグネチャーが正しく表示されるようになりました。

typename キーワードの使用に関するインスペクションが更新され、C++20 標準で行われた変更をサポートするようになりました。 また、コード生成およびドキュメントアクションで C++23 で推論される this パラメーターが正しく処理されるようになりました。

構文スタイル

ソースファイル内の定義がヘッダーの宣言順に合わせて自動的に並べ替えられるようになりました。 1 回だけ並べ替える場合は、特定の関数、ファイル、またはプロジェクト全体に対して新しい Sort definitions by the order of declaration(宣言の順序で定義を並べ替える)コンテキストアクションを使用できます。 継続的に適用する場合は、対応する構文スタイル設定を有効化してください。 すると、ReSharper C++ のインスペクションによって不一致が警告され、Code Cleanup(コードのクリーンアップ)時に定義が並べ替えられます。

C++ の命名インスペクションを 2 つの更新によって強化しました。 1 つ目の更新では、ラムダを格納する変数に特定の命名スタイルを定義できるようにしました。 もう 1 つの更新では、クラステンプレート引数の推論ガイドをクラスと構造体に設定した命名規則に照らして正しく検証されるようにしました。

新しいフォーマッターの設定では、コンストラクターイニシャライザーのコロンの前にスペースを挿入するように構成できます。

ナビゲーション

Find Usages(使用箇所の検索)ウィンドウで、非 const メンバー関数の呼び出しの使用箇所が読み取り/書き込みで分類されるようになりました。これにより、読み取り専用の操作と変更の操作を区別できるようになりました。

可読性を改善するため、File Structure(ファイル構造)ウィンドウにキーワードと識別子の構文ハイライトが追加されました。

virtual キーワードを Ctrl+クリックし、オーバーライドする関数に素早く移動できるようになりました。overrideCtrl+クリックして基本関数に移動する動作と同じです。

インレイヒント

配列に続き、std::initializer_list 型の引数でも要素インデックスのヒントを使用できるようになりました。 このヒントは、ReSharper | Options(オプション)| Environment(環境)| Inlay Hints(インレイヒント)| C/C++ | Aggregate Initialization(集約初期化)設定ページで構成できます。

インプレースリファクタリングがインレイヒントに表示されるようになりました。これにより、リファクタリングが分かりやすくなり、JetBrains IDE との一貫性が確保されました。 インレイヒントの外観は、ReSharper | Options(オプション)| Environment(環境)| Editor(エディター)| Appearance(外観)で構成できます。

Unreal Engine

ブループリント内のコードの使用箇所を示す ReSharper C++ の優れた機能が拡張され、UINTERFACE を実装するブループリントもサポートするようになりました。

BlueprintGetter および BlueprintSetter メタデータ内のメソッド名のコード補完を追加しました。

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

Visual Studio 統合

ReSharper C++ に Visual Studio ネイティブのステップフィルター処理が組み込まれました。 これにより、C++ デバッガーが *.natstepfilter 構成ファイルで定義されたステップ実行ルールを順守するようになります。

ReSharper C++ が Visual Studio 2022 でプロジェクトモデルを読み込む際に 64 ビットバージョンの MSBuild をデフォルトで使用するようになりました。 これにより、特に Unreal Engine 5.6 を使用するソリューションで巨大なプロジェクトを読み込む際の信頼性に関する問題が解消されます。

ReSharper C++ の機能を CMake プロジェクトと Open Folder プロジェクトのビルドターゲットに含まれないソースファイルでも使用できるようになりました。 パフォーマンスに関する懸念から、そのようなファイルは今後もコードのインデックス作成から除外されます。

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