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

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

インスペクション

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年10月15日

関連ページ:

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

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

ネーミングスタイル

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

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

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

クイック・ドキュメント

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

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

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

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

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