ReSharper 2019.2ヘルプ

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プロジェクトを開いてから数秒後に入力または移動を開始できます。

You can configure how the engine code is indexed on the コード編集 | C++ | Unreal Engine page of ReSharper options ( Alt+R,,O ): you can disable the background indexing in case you want to have all engine code indexed before you start, or if you notice any performance degradation, you can disable the indexing altogether by clearing the Unreal Engineソースファイルの索引付け .

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

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

Unreal Engineの命名規則

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

ReSharper: Applying UE4 naming conventions

Unlike the default naming ruleset, which you can configure on the コード編集 | C++ | ネーミングスタイル page of ReSharper options ( Alt+R,,O ), Unreal Engine naming conventions are not configurable. ReSharper uses special code inspections to detect violations of naming rules according to the Unreal Engine coding standard. These inspections suppress the current naming ruleset in UE4 projects. If you want to change the severity level or disable these inspections, you can find them under C++ | Unreal Engine on the コード・インスペクション | インスペクション重大度 page of ReSharper options ( Alt+R,,O ). You can also see the corresponding warning and will be able to disable the UE4 naming inspection on the コード編集 | C++ | ネーミングスタイル when a UE4 solution is open:

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++コードに固有です。

インスペクション

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

関連ページ:

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

このコマンドを使用すると、ソリューション内の特定のシンボルのすべての使用箇所を見つけることができます。シンボルの宣言または他の用途から検索を開始することができます。エディター、ファイル構造ウィンドウおよび他のツールウィンドウからこのコマンドを呼び出すことができます。キャレットがシンボルの使用箇所をナ...

ネーミングスタイル

バージョン2018.3から始まって、ReSharperは既存のコードからC#シンボルの命名規則を自動的に学習できます。命名規則を手動で設定したい場合は、ReSharperオプションのコード編集 | C# | ネーミングスタイルページの自動検出ルールを使用するチェックボックスをクリアしてください。Re...

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

C++のサポートは、ReSharper C++(ReSharperと一緒に、またはReSharper Ultimateと別々にまたは並行してインストールできる)の専用製品で使用できます。ReSharperのコーディング支援機能のほとんどはC++でもサポートされています。これらの機能の詳細については、...

クイック・ドキュメント

ReSharper | 編集 | クイックドキュメントを表示するReSharperを使用すると、エディター内のシンボルのドキュメントをすばやく確認できます。関数呼び出しを調べている場合は、パラメータ情報を呼び出して関数のオーバーロードのリストを表示できます。シンボルのクイックドキュメントを表示するに...

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

C++のサポートは、ReSharper C++(ReSharperと一緒に、またはReSharper Ultimateと別々にまたは並行してインストールできる)の専用製品で使用できます。リファクタリングに加えて、ReSharperはコンテキスト・アクションで利用可能ないくつかの小さなローカルコード変...

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

C++のサポートは、ReSharper C++(ReSharperと一緒に、またはReSharper Ultimateと別々にまたは並行してインストールできる)の専用製品で使用できます。ReSharperのコード解析の主な機能は、C++でもサポートされています。これらの機能の詳細については、コード解...