ReSharper 2020.2 ヘルプ

Unreal Engine プロジェクトでの作業

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

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

始める前に

まだ行っていない場合は、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 コードのインデックス作成

Unreal Engine プロジェクトを開いてから数秒後に、入力またはナビゲートを開始できます。デフォルトでは、エンジンコード(プロジェクトの主要部分を構成する)のインデックス作成は、非エンジンコードが解析された後にバックグラウンドで実行されるためです。

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

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

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

Unreal Engine の命名規則

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

ReSharper: Applying Unreal Engine naming conventions

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

ReSharper: Applying Unreal Engine naming conventions

Unreal Engine のリフレクション指定子

ReSharper は、C++ 言語にないリフレクションをエミュレートするために使用される UCLASS , USTRUCT , UENUM などの Unreal Engine のリフレクションマクロをサポートしています。さらに、ReSharper は、GENERATED_BODY() からエンティティを解決し、Unreal Engine プロジェクトがビルドされていなくても、完了の提案を提供します。

ReSharper: Code completion for Unreal Engine reflection specifiers

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

ReSharper: Quick documentation for Unreal Engine reflection specifiers

Unreal Engine のリモートプロシージャコールのサポート

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

ReSharper は、Unreal Engine RPC に対応する必要な _Validate および _Implementation 関数があるかどうかをチェックし、少なくとも 1 つが見つからない場合は RPC を強調表示します。強調表示で Alt+Enter を押すと、欠落している実装スタブを生成できます。

ReSharper: Unreal Engine remote procedure calls support

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

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

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

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

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

ReSharper C++: refactoring RPC function calls

HLSL を使用したシェーダー開発

ReSharper は、HLSL の初期サポートを提供します。

  • HLSL ファイルへのナビゲーション。

  • 構文の強調表示と構文エラーの強調表示。

  • 型情報とドキュメントを含むコード要素のツールチップ。

  • セマンティックコード分析チェック。

  • いくつかの便利なインスペクションとクイックフィックス。

  • 補完リストのスマートな提案。

  • 実験的なリファクタリングですが、名前の変更、インライン変数、変数の導入、シグネチャーの変更は、多くの場合既に機能しています。

ReSharper: Support for HLSL

コードインスペクション

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

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

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

関連ページ:

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

ReSharper | 検索 | 使用箇所の検索このコマンドを使用すると、ソリューションおよび参照されるアセンブリ内の 1 つ以上のシンボルのすべての使用箇所を見つけることができます。シンボルの宣言またはその他の使用箇所から検索を開始できます。このコマンドは、ソリューションエクスプローラー、フ...

ネーミングスタイル

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

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

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

クイックドキュメント

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

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

リファクタリングに加えて、ReSharper はコンテキストアクションで利用可能ないくつかの小さなローカルコード変換を提供します。ReSharper は、C++ に対して次のリファクタリングを提供します。リファクタリングを実行するキャレットをシンボルに設定するか、リファクタリングするコードフラグメン...

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

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