ReSharper 2020.1ヘルプ

UE4プロジェクトでの作業

Unreal Engineプロジェクトを開くと、ReSharperはすべての機能とアクションを自動的に調整して、Unreal Engineのさまざまな側面と規則を考慮に入れるようにします。たとえば、自動インポートとコード分析は .generated.h ファイルのインクルードを考慮します。

ReSharperのUE機能のほとんどはバックグラウンドで邪魔にならないように動作しますが、このトピックで説明されているアクションや設定を提供するものがいくつかあります。

始める前に

まだ行っていない場合は、Visual StudioコピーがUnreal Engineプロジェクトで動作するように設定されていることを確認してください。詳細は、Unreal Engineドキュメントに記載されています(英語)

少なくともVisual Studioの波紋は無効にすることをお勧めします。Visual Studioは、Unreal Engineプロジェクトで誤検知を起こすことが多いためです。ツール | オプション | C++ | 拡張 | コード解析に移動し、波線を無効にするまたはC++コード分析エクスペリエンスを無効にするに設定します。

Disabling Visual Studio squiggles to get rid of false positives in Unreal Engine projects

Unreal Engineコードのインデックス作成

デフォルトでは、エンジンコードのインデックス付け(プロジェクトの大部分を占める)は、エンジン以外のコードが解析された後にバックグラウンドで実行されるため、UE4プロジェクトを開いてから数秒後に入力または移動を開始できます。

ReSharperオプション(Alt+R,O)のコード編集 | C++ | Unreal Engineページでエンジンコードのインデックスを作成する方法を構成できます。開始前にすべてのエンジンコードのインデックスを作成する場合、またはパフォーマンスの低下に気付いた場合は、バックグラウンドインデックスを無効にできます。Unreal Engineソースファイルの索引付けをクリアして、インデックス作成を完全に無効にします。

インデックス作成が有効になっているとき、多くの機能を持つでしょう。例:エンジンから任意のシンボルを使用すると、ReSharperは自動的に不足している#includeを追加するか、エンジンのコード内でエンジンクラス( TArray<T> など)の使用箇所を見つけて、それらがどのように使用されるかを調べます。

索引付けが無効になっている場合でも、ReSharperはヘッダーファイル名を索引付けします。これは非常に高速ですが、#include <unreal/SomeClassFromUnreal.h>などのインクルードにはコード補完を使用できます。ヘッダをインクルードすると、そのコードは自動的にインデックスされるため、コード補完とインクルードヘッダからのシンボルの解析ができます。

Unreal Engineの命名規則

UE4プロジェクトを開発するときは、おそらくUnreal Engineコーディング標準(英語)を使用しているでしょう。ReSharperはUE4プロジェクトを検出し、これらのプロジェクトでコードを生成および分析するときにUE4命名規則を自動的に使用します。

ReSharper: Applying UE4 naming conventions

ReSharperオプション(Alt+R,O)のコード編集 | C++ | ネーミングスタイルページで構成できるデフォルトの命名規則セットとは異なり、Unreal Engineの命名規則は構成できません。ReSharperは、特殊コードインスペクションを使用して、Unreal Engineコーディング標準に従って命名規則の違反を検出します。これらのインスペクションは、UE4プロジェクトの現在の命名規則セットを抑制します。重大度レベルを変更したり、これらのインスペクションを無効にしたい場合は、ReSharperオプション(Alt+R,O)のコード・インスペクション | インスペクション重大度ページのC++ | Unreal Engineで見つけることができます。また、対応する警告が表示され、UE4ソリューションが開いている場合、コード編集 | C++ | ネーミングスタイルでインスペクションを命名するUE4を無効にできます。

ReSharper: Applying UE4 naming conventions

UE4リフレクション指定子

ReSharperは UCLASS , USTRUCT , UENUMなどのUnreal Engineリフレクションマクロをサポートします。これらはC++言語にはないリフレクションをエミュレートするために使用されます。あなたのUnreal Engineプロジェクトがビルドされていなくても、これらのマクロは解決され、それらのための完成提案を得るでしょう。

ReSharper: Code completion for UE4 reflection specifiers

コード補完のクイック・ドキュメントCtrl+Q)および要約ツールチップは、リフレクションマクロにも使用できます。

ReSharper: Quick documentation for UE4 reflection specifiers

UE4 リモートプロシージャコールサポート

コードを分析するとき、ReSharperは Client , ServerによってUE4 リモートプロシージャコール (RPC)(英語)を識別し、UFUNCTION 宣言ステートメント内の NetMulticast 指定子を識別します。

ReSharperは、UE4 RPCが対応する必要な _Validate および _Implementation 機能を持っているかどうかをチェックし、それらの少なくとも1つが見つからない場合はRPCを強調表示します。強調表示で Alt+Enter を押すと、不足している実装スタブを生成できます。

ReSharper: UE4 remote procedure calls support

上の例では、_Validate 関数がなくなり、ReSharperが次のスタブを生成します。

bool AShooterCharacter::ServerEquipWeapon_Validate(AShooterWeapon* NewWeapon) { }

RPCから、Ctrl+Shift+G のナビゲートポップアップ、または上記のスクリーンショットに示されている Alt+Enter メニューから _Validate および _Implementation 機能にジャンプできます。

BlueprintNativeEvent(英語)でも動作します。対応する指定子が UFUNCTIONに渡されると、ReSharperは _Implementation 関数を生成し、宣言からその関数にナビゲートすることができます。

UE4 RPC関数呼び出しで名前変更およびシグネチャーの変更リファクタリングを使用できます。それに応じて、関連する _Validate および _Implementation 関数が更新されます。

ReSharper C++: UE4. refactoring RPC function calls

コード・インスペクション

C++コードの一般的な側面をチェックする数百のコードインスペクションに加えて、Unreal Engineプロジェクトに固有のインスペクションがいくつかあります。

Unreal Engine (6 インスペクション)

このカテゴリのインスペクションは、Unreal Engine(英語)プロジェクトのC++コードに固有です。

インスペクション

デフォルトの重大度
矛盾したUE4の命名(英語)ヒント
矛盾するUE4 Uクラス名エラー
非UPropertyオブジェクトメンバーはいつでもガベージコレクションできます警告
非プロパティメンバーに格納されたオブジェクトは、いつでもガベージコレクションできます警告
宣言前のUFUNCTIONマクロ呼び出しは効果がありません警告
宣言前のUPROPERTYマクロ呼び出しは効果がありません警告
最終更新日: 2020年7月2日

関連ページ:

使用箇所の検索のシンボル

このコマンドを使用すると、ソリューション内の1つ以上のシンボルのすべての使用状況を検索できます。シンボルの宣言またはその他の使用箇所から検索を開始できます。このコマンドは、ソリューションエクスプローラー、ファイル構造ウィンドウおよびその他のツールウィンドウから呼び出すことができます。キャレットがシン...

ネーミングスタイル

バージョン2018.3から、ReSharperは既存のコードからC#シンボルの命名規則を自動的に学習を実行できます。命名規則を手動で構成する場合は、ReSharperオプション(Alt+R,O)のページの自動検出ルールを使用するチェックボックスをオフにします。ReSharperは、コード内のシンボル...

C++のコーディングアシスタンス

ReSharperのコーディング支援機能のほとんどはC++でもサポートされています。これらの機能の詳細については、コーディング支援セクションの対応するトピックを参照してください。このセクションの主なトピックでは、機能マトリックスを見つけて、C++で何がサポートされているのかを確認することもできます。...

クイック・ドキュメント

ReSharperを使用すると、エディター内のシンボルのドキュメントをすばやく確認できます。エディターでシンボルの使用箇所の上にマウスを移動すると、簡単な説明を含むポップアップが表示されます。ライブラリシンボルの場合、ポップアップでAlt+クリック(Linuxの場合はCtrl+Alt+クリック)して...

C++のリファクタリング

リファクタリングに加えて、ReSharperはコンテキスト・アクションで利用可能ないくつかの小さなローカルコード変換を提供します。ReSharperは、C++に対して以下のリファクタリングを提供します。シグネチャーの変更、スコープ付き列挙型に変換、メソッドの抽出、フィールドの導入、ネームスペースエイ...

C++のコードインスペクションとクイックフィックス

ReSharperのコード解析の主な機能は、C++でもサポートされています。これらの機能の詳細については、コード解析の該当するトピックを参照してください。このセクションのサブジェクトでは、フィーチャマトリックスを見つけて、C++で正確にサポートされているものを確認することもできます。このトピックでは...