JetBrains Rider 2024.1 ヘルプ

非推奨の API を報告および更新する

API を進化させるときは、遅かれ早かれ重大な変更を導入する必要があります。これに対処する従来の方法は、非推奨のタイプとメンバーを [Obsolete] 属性でマークし、属性のメッセージを使用して新しい API に移行する方法を説明することです。

JetBrains Rider は、API ユーザーが古い API を見つけて自動的に新しい API に変換できる、より洗練されたソリューションを提供します。API の作成者として、廃止された型またはメンバーを JetBrains.Annotations[CodeTemplate] 属性でマークする必要があります。ここで、古い API と一致する検索パターンとその置換パターンを指定できます。この属性は、対応するクイックフィックスおよび範囲内の修正を含むカスタムコードインスペクションとして機能します。

[CodeTemplateAttribute] は、C# コードを解析する他のすべての JetBrains 製品 (たとえば、JetBrains ReSharper JetBrains Fleet および InspectCode コマンドラインツール ) によって認識されます。

例を使用して、それがどのように機能するかを見てみましょう。

public class MyAssert { // Deprecated API. Usages look like: // MyAssert.IsTrue(args.Length > 0); public static void IsTrue(bool condition) { if (!condition) throw new Exception("Assertion failed"); } // New API. Usages should look like: // MyAssert.That(args.Length > 0, Is.True); public static void That<T>(T value, Constraint<T> constraint) { // ... } } public class Constraint<T> { } class Is { public static Constraint<bool> True => null; public static Constraint<bool> False => null; }

非推奨の IsTrue() メソッドに [CodeTemplate] 属性でアノテーションを付けましょう。

[CodeTemplate( searchTemplate: "$member$($expr$)", Message = "The API is deprecated, use 'MyAssert.That' instead", ReplaceTemplate = "MyAssert.That($expr$, Is.True)", ReplaceMessage = "Convert to 'MyAssert.That'")] public static void IsTrue(bool condition) { if (!condition) throw new Exception("Assertion failed"); }

これで、JetBrains Rider は MyAssert.IsTrue() のすべての使用箇所を報告し、移行の修正を提案します。

JetBrains Rider: Using [CodeTemplate] attribute to suggest migration fixes for deprecated APIs
MyAssert.IsTrue(args.Length > 0);
MyAssert.That(args.Length > 0, Is.True);

関連ページ:

アノテーションを使用してコードインスペクションを改善する

コード検査などの JetBrains Rider の多くの機能は、問題を検出し、改善を提案し、他の方法でお手伝いするために、言語構成の動作を知ることに大きく依存しています。ただし、この種の分析ではすべてを検出できるわけではありません。例: メソッドがフォーマットメソッドとして設計されている場合、メソッドの呼び出しに必要な引数が含まれていない場合、構造解析では潜在的な問題は見つかりません。この場合や他の多くの場合、JetBrains Rider のは非常に役立ちます。このフレームワークで宣言された...

スコープを修正

ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、ソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別できます。範囲内の修正を適用する JetBrains Rider のインスペクションでハイライトされ...

コードインスペクション

JetBrains Rider は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション JetBrains Rider が提供するコードの種類を調べるには、異なる言語の JetBrains Rider コードインスペクションの全リストをご覧ください。コードイ...

InspectCode コマンドラインツール

JetBrains Rider の最も注目すべき機能の 1 つであるコードインスペクションは、IDE を開かなくても使用できます。無料のクロスプラットフォームコマンドラインツールの InspectCode では、JetBrains Rider のインスペクションのすべてを適用するために、少なくとも 1 つのパラメーター (ソリューションファイル) が必要です。InspectCode を実行する ReSharper コマンドラインツールをダウンロードします。ダウンロードボタンの横にあるセレクタを使用...

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、JetBrains Rider はサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかにかかわらず、コードインスペクションを特定の範囲でいつでも実行できます。「鉛筆」ウィジェットを使用して、エディターから直接インスペクション設定をすばやく調整するか、設定でより詳細な構成を行うことができます。を押すか、メニューから(W...