Unity コードインスペクション
JetBrains Rider のコードインスペクション機能は、Unity 専用の C# コードでもサポートされています。 これらの機能に関する詳細情報は、 コードインスペクションでコードの問題を見つける セクションの対応するトピックにあります。
コードインスペクションの例とクイックフィックス
JetBrains Rider は、不明なシーン、タグ、レイヤーの警告を表示します。

ソリューション全体の分析 が有効化されている場合、JetBrains Rider は暗黙的に使用されるフィールドやイベント関数を認識し、アクセスされていないものとしてハイライトしません。
空のイベント機能は、デッドコードとして表示され、削除する クイックフィックスがあります。
NetworkBehaviour以外のクラス内でSyncVarAttributeを使用すると、エラーとして扱われます。未解決のシンボルを使用してシリアル化フィールドを作成するには、クイックフィックスが推奨されます。

JetBrains Rider は、すべてのイベント関数が正しいシグネチャーを持つことを保証します:不正なシグネチャーをハイライトし、修正用のクイックフィックスを提案します:

JetBrains Rider は、
tagプロパティで非効率的な文字列リテラルの比較を使用した場合に警告し、CompareTagへの呼び出しに書き換えるクイックフィックスを提供します。
MonoBehaviourまたはScriptableObjectから派生したクラスの新しいインスタンスをnewキーワードで作成しようとすると、JetBrains Rider から警告が表示されます。 代わりにgameObject.AddComponent<T>()またはScriptableObject.CreateInstance<T>()を使用することをお勧めします。[InitializeOnLoad]属性や[InitializeOnLoadMethod]属性にもインスペクションがあり、正しいメソッドまたはコンストラクターのシグネチャーであることを確認します。クラスに静的コンストラクターがない場合、JetBrains Rider は冗長な[InitializeOnLoad]属性をグレー表示し、属性の削除またはコンストラクターの作成のクイックフィックスを提供します。
Unity 固有のコード一覧インスペクション
Unity (47 インスペクション)
このカテゴリのインスペクションは、 Unity(英語) プロジェクトに固有のコードの問題を報告します。
インスペクション | |
|---|---|
代替の非割り当てメソッドが利用可能です | |
「PropertyDrawer」から派生したクラスで「base.OnGUI()」を避けてください | |
コンポーネントまたはスクリプト可能オブジェクトを解決できません | |
DOTS: IAspect のフィールドは次のいずれかの型である必要があります: RefRW、RefRO、EnabledRefRW、EnabledRefRO、DynamicBuffer、Entity | |
DOTS: 一貫性のない型キーワードです | |
DOTS: 指定した型は構造体型でなければなりません | |
同名のイベント関数がすでに宣言されています | |
「コンポーネント」または「MonoBehaviour」から派生した型が必要です | |
「ScriptableObject」から派生した型が必要です | |
「ComponentLookup」型のフィールドは、使用前に更新する必要があります | |
ファイル名はアセンブリの名前と一致する必要があります | |
グループパスが定義されていません | |
メソッドシグネチャーが正しくありません | |
Odin のグループ属性タイプが正しくありません | |
メンバーが複数の UI グループに同時に表示されます | |
文字列リテラルで参照されているメソッドが期待されたシグネチャーではありません | |
「MonoBehaviour」インスタンスは「new」ではなく「GameObject.AddComponent<T>()」でインスタンス化する必要があります | |
パラメーターは「コンポーネント」から派生している必要があります | |
複数のフィールドへの属性の誤った適用の可能性があります | |
基盤となる Unity エンジンオブジェクトの有効期間チェックが意図せずバイパスされる可能性があります(「UnityEngine.Object」から派生した型で null 合体を行うと、基盤となる Unity エンジンオブジェクトの有効期間チェックがバイパスされます) | |
基盤となる Unity エンジンオブジェクトの有効期間チェックが意図せずバイパスされる可能性があります(「UnityEngine.Object」から派生した型で null 伝播を行うと、基盤となる Unity エンジンオブジェクトの有効期間チェックがバイパスされます) | |
基盤となる Unity エンジンオブジェクトの有効期間チェックが意図せずバイパスされる可能性があります(「UnityEngine.Object」から派生した型のパターンマッチング null チェックは、基盤となる Unity エンジンオブジェクトの有効期間チェックをバイパスします) | |
GUID ベースのアセンブリ参照を優先します | |
冗長な属性の使用(この宣言型に属性を適用すると冗長です) | |
冗長な属性の使用(冗長な「FormerlySerializedAs」属性) | |
冗長な属性の使用(冗長な「HideInInspector」属性) | |
冗長な属性の使用(冗長な「InitializeOnLoad」属性) | |
冗長な属性の使用(冗長な「SerializeField」属性) | |
冗長な Unity イベント関数です | |
組み込みコンポーネントのプロパティへの繰り返しアクセスは非効率的です | |
シーンが存在しません | |
ビルド設定でシーンが無効化されています | |
「ScriptableObject」インスタンスは「new」ではなく「ScriptableObject.CreateInstance<T>()」でインスタンス化する必要があります | |
オブジェクトのインスタンス化直後に「親」プロパティを設定するのは非効率的です | |
短いシーン名が一意ではありません | |
文字列ベースのグラフィックスプロパティルックアップは非効率的です | |
コンポーネント型の文字列ベースのルックアップは非効率的です | |
ビルド設定にインデックスがありません | |
入力名が入力マネージャーで定義されていません | |
レイヤーが「タグとレイヤー」で定義されていません | |
プロジェクトでリソースが定義されていません | |
別のメニュー項目に同じショートカットが定義されています | |
タグが「タグとレイヤー」で定義されていません | |
プロジェクト内に同じ名前のアニメーターステートがありません | |
ビルド設定に同名のシーンがありません | |
関数内で「GetSingleton」呼び出しの結果を使用するには、「OnCreate」に「RequireForUpdate」呼び出しを含める必要があります | |
明示的な文字列比較の代わりに「CompareTag」を使用してください |
Unity バーストコンパイラーの警告 (17 インスペクション)
このカテゴリのインスペクションは、コードが実際にコンパイルされる前に Unity バーストコンパイラー(英語)の警告を報告します。
インスペクション | |
|---|---|
マネージドインデクサーへのアクセスはサポートされていません | |
マネージドメソッドへのアクセスはサポートされていません | |
ボクシングはサポートされていません | |
バースト: String.Format(format, ...) の引数型が無効です | |
バースト: この変数は System.String に解決されるため、Burst でコンパイルされたコールスタックで無効なマネージドメソッド呼び出しが発生する可能性があります | |
マネージ型の作成はサポートされていません | |
デバッグログ関数は文字列のみを受け入れます | |
関数シグネチャーにマネージ型を含めることはできません | |
非読み取り専用の静的フィールドからの読み込みはサポートされていません | |
マネージ型の読み込みはサポートされていません | |
共有静的型パラメーターにはアンマネージ制約が必要です | |
一部の SharedStatic`1.GetOrCreate オーバーロードによってコンパイラーエラーが発生します | |
String.Format(format, ...) は文字列リテラルと const 文字列のみを受け入れます | |
'foreach' 構造はサポートされていません | |
Try ステートメントはサポートされていません | |
Typeof は Burst では禁止されています | |
静的フィールドへの書き込みはサポートされていません |
Unity パフォーマンスインスペクション (5 インスペクション)
このカテゴリのインスペクションは、計算効率の悪いパターン Unity(英語) プロジェクトを報告します。
インスペクション | |
|---|---|
「Camera.main」は高負荷です | |
高負荷なメソッド呼び出し | |
高負荷な null 比較 | |
乗算演算の順序が非効率的です | |
ギザギザ配列または一次元配列を多次元配列の代わりに使用してください |