JetBrains Fleet 1.48 ヘルプ

C# で非推奨の API をレポートおよび更新する

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

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

[CodeTemplateAttribute] は、C# コードを解析する他のすべての JetBrains 製品 (JetBrains Rider JetBrains ReSharper など) によって認識されます。

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

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 Fleet は MyAssert.IsTrue() のすべての使用箇所をレポートし、移行の修正を提案します。

JetBrains Fleet: Using [CodeTemplate] attribute to suggest migration fixes for deprecated APIs
MyAssert.IsTrue(args.Length > 0);
MyAssert.That(args.Length > 0, Is.True);
2025 年 5 月 06 日

関連ページ:

スマートモード

JetBrains Fleet は、軽量テキストエディターとしても、インテリジェントなコードエディターとしても機能します。システムリソースを最適化するため、リソースを大量に消費する機能は必要な場合にのみ有効になります。スマートモードを有効にすると、個々のファイルまたは複数のファイルを含むフォルダーをシームレスに操作できます。スマートモードを有効にする右上隅にあるスマートモードのステータスアイコンをクリックします。表示されるポップアップで、「有効にする」をクリックします。必要なインデックス作成と準...

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

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

C# 文字列リテラルのコード分析

システム文字列のフォーマット方法:JetBrains Fleet は、、などのすべての .NET 文字列フォーマットメソッドの書式文字列と引数を分析します。文字列フォーマットメソッドの使用では、JetBrains Fleet は書式プレースホルダーをハイライトし、キャレットが次のいずれかにあるときに、対応する引数を持つプレースホルダーを同期的にハイライトします。引数と形式プレースホルダーが一致しない場合 (引数が欠落していると実行時にが発生します)、JetBrains Fleet は欠落または...