ReSharper C++ 2024.1 では C++20 モジュールのサポートが改善され、Call Tracking(呼び出しトラッキング)に外向きの呼び出しが実装されています。 コーディング支援の強化により、Change Signature(シグネチャーの変更)リファクタリングが改善され、ドキュメントコメントのサポートの更新などが行われています。 ReSharper C++ 2024.1 では Unreal Engine 開発者向けに Slate UI フレームワークのサポートと C++ コードでのアセットパスの補完が提供されています。
無料 30 日間体験版をご利用可能です
モジュール検出のプロセスが更新されたことで、ReSharper C++ が内部パーティションユニットをサポートするようになりました。これはモジュールの外部インターフェースに貢献しないモジュールパーティションユニットですが、 export module
宣言が関連付けられていないモジュールパーティションであるとも言えます。
エクスポートされた C++20 モジュールの内部表現を改良し、他のモジュールからインポートされたエンティティへの推移的な参照を容易にしました。 従来、これらのエンティティはインポート元のモジュールから再エクスポートされていました。 この変更によってエクスポートされるモジュールのフットプリントが大幅に減少し、C++20 モジュールを利用するプロジェクトのパフォーマンスが改善されることを期待しています。
ReSharper C++ 2024.1 では Unreal Engine の Slate UI フレームワークがサポートされるようになりました。 ReSharper のコードフォーマッターと入力支援を使用することで、Unreal Engine の規則に従って Slate コードを整形できます。 Go to declaration(宣言に移動)、Find Usages(使用箇所の検索)、Rename(名前の変更)などの機能も Slate の宣言構文を理解するように更新されています。
ReSharper C++ はブループリント機能との統合により、UENUM インスタンスの名前を変更する際の Core Redirects の追加や C++ コードのリソース名に対するアセットパスの補完を引き続きサポートしています。
シェーダーコードで動的シェーダーのリンクに使用される HLSL インターフェースがサポートされるようになりました。
Unreal Engine 開発向けのスタンドアロン型クロスプラットフォーム IDE にご興味がありましたら、Rider をぜひご検討ください。 Rider と ReSharper C++ での Unreal Engine のサポートは同等であるため、Rider 2024.1 アップデートと同じ改善を期待できます。
ReSharper の Call Tracking(呼び出しトラッキング)が従来の内向きの呼び出しのトラッキングだけでなく、外向きの C++ 呼び出しチェーン内の移動操作をサポートするようになりました。 外向きの呼び出しを調べるには、任意の関数にキャレットを置き、コンテキストメニューから Inspect(検査)| Outgoing calls(外向きの呼び出し)を選択します。 または、Ctrl+Shift+Alt+A を押して Inspect This(検査)メニューから呼び出すことも可能です。
Change Signature(シグネチャーの変更)で関数パラメーターの型をポインター、参照、または値に簡単に変更できるようになりました。 ReSharper は関数本体内のパラメーターの使用箇所の更新と関数呼び出しサイトでの関数引数の調整を自動的に行い、必要に応じて逆参照または address-of 演算子を追加します。
依存するコードで使用されている可能性のある関数で Change Signature(シグネチャーの変更)を呼び出した際、リファクタリング中に変更内容を確認し、更新が必要な使用箇所を確定できるようになりました。
Change Signature(シグネチャーの変更)を使って追加された新しい関数パラメーターのデフォルトの引数を指定することも可能です。
Change Signature(シグネチャーの変更)には他にも以下のような重要な更新があります。
unsigned int
型の int
型指定子が保持されるようになりました。 生成されたドキュメントコメントのスタイルをライブテンプレートを編集せずにカスタマイズできるようになりました。 ドキュメントコメントのスタイルを構成するには、ReSharper の Settings(設定)| Code editing(コード編集)| C++ | Code generation(コード生成)に移動します。
JetBrains Grazie は ReSharper 2023.3 で ReSharper に組み込まれた新しい文法およびスペルチェッカーです。 2024.1 リリースでは、Grazie を使った文法インスペクションを C++ ドキュメントコメント内でも使用できるようになりました。
Change Signature(シグネチャーの変更)リファクタリングで @param
コマンドが関数パラメーターのリストに同期されるようになりました。 このリファクタリングは、除去されたパラメーターの @param
コマンドを削除し、新しいパラメーターのコマンドを追加し、含まれるパラメーターの新しい順序に合わせて既存のコマンドを再整理します。
Richard Thomson 氏が整備している C++ リファクタリングツールに対する広範なテストスイートの最新結果によると、ReSharper C++ はほとんどのテストケースに合格しており、他のツールを圧倒し続けています。 JetBrains は ReSharper の補完品質を継続的に改善する取り組みの中で、Richard 氏のテストスイートで発見されたいくつかの問題を ReSharper C++ 2024.1 で解決しました。 たとえば、Create constructor from usage(使用箇所からコンストラクターを作成)クイックフィックスでは必要に応じてデフォルトのコンストラクターが追加されるようになっています。
ReSharper C++ 2024.1 では、集計の初期化で重複する慣用的なゼロイニシャライザーを除去することが提案されるようになりました。 いくつかの新しいインスペクションでは、static constexpr
データメンバーに対する冗長な inline
指定子など、static データメンバーに関する複数の問題が検出されます。
コードのクリーンアップには、冗長なアクセシビリティ指定子を除去する項目と継承のないクラスを final
にする項目が新たに追加されています。 Apply ‘auto’ style('auto' スタイルの適用)でローカル変数だけでなく、グローバル変数とクラスメンバーも処理されるようになりました。
これまでは特定のスコープでインスペクションを抑止する場合、ReSharper 固有の // ReSharper disable
コマンドを使用することができました。 ReSharper C++ 2024.1 では clang-tidy が使用する NOLINT
、NOLINTNEXTLINE
、および NOLINTBEGIN ... NOLINTEND
コメントも認識されるようになりました。
ReSharper C++ 2024.1 ではいくつかの新しい整形オプションが導入されています。
.clang-format
構成を使用する際、ReSharper のフォーマッターが DisableFormat
および IndentAccessModifiers
設定を考慮するようになりました。 GNU の組み込み clang-format スタイルもサポートされるようになりました。
このリリースで導入されたその他の変更点については ReSharper の新機能をご覧ください。
無料 30 日間体験版をご利用可能です