アノテーションを使用して C# のコードインスペクションを改善する
コード検査およびその他の多くの JetBrains Fleet 機能は、問題を検出し、改善の可能性を提案し、他の方法で役立つように、言語構造の動作を知ることに主に依存しています。
ただし、この種の分析ではすべてを検出できるわけではありません。例: メソッドがフォーマットメソッドとして設計されている場合、メソッドの呼び出しに必要な引数が含まれていない場合、構造解析では潜在的な問題は見つかりません。
このような場合や他の多くの場合、JetBrains Fleet の JetBrains.Annotations が非常に役立ちます。このフレームワークで宣言された属性を使用すると、JetBrains Fleet が必要な方法でコードを分析できるようになります。例: メソッドに [StringFormatMethod] アノテーションを付けて、System.String.Format() と同じように機能するカスタムメソッドを示すことができます。
これは最も単純な例であり、より複雑な使用例を持つ他の役立つ属性があります。これらの属性の完全なリストはリファレンスにあります。
ほとんどの場合、コードアノテーション属性は特定のコードインスペクションを有効にします。
StringFormatMethodAttributeは、文字列のフォーマット方法の誤用を検出するのに役立ちます。CanBeNullAttributeおよびNotNullAttributeは、「「値を null にすることはできない」属性でマークされたエンティティへの「null」割り当ての可能性」インスペクションに関連付けられています。詳細については、C# の値と null 可能性の分析を参照してください。CannotApplyEqualityOperatorAttributeは ' 'CannotApplyEqualityOperatorAttribute' でマークされた '==' 型と比較 ' インスペクションにバインドされていますContractAnnotationAttributeはあなたの機能のための契約を定義し、対応するインスペクションをオンにするために使用することができます。例:[ContractAnnotation("input:null => false")]を使用して、パラメーターsがnullの場合は常にfalseを返す関数bool Foo(object input)をコンシューマーに通知することができます。
また、コードアノテーションにより、アノテーション付きアイテムに対するクイックフィックス、コード補完提案、およびコード生成機能がさらに有効になります。アノテーションは、C# のソーステンプレートを作成して使用するためにも必要です。
JetBrains Fleet では、次の 2 つの方法でコードシンボルにアノテーションを付けることができます。
上の例に示すように、ソースコード内のシンボルにアノテーションを付けることができます。この場合、プロジェクトで
JetBrains.Annotations名前空間を参照する必要があります。詳細については、C# ソースコードのアノテーションを参照してください。ソースにアクセスできない場合でも、コンパイルされたライブラリコード内のシンボルにアノテーションを付けることができます。詳細については、C# の外部アノテーションを参照してください。
関連ページ:
スマートモード
JetBrains Fleet は、軽量テキストエディターとしても、インテリジェントなコードエディターとしても機能します。システムリソースを最適化するため、リソースを大量に消費する機能は必要な場合にのみ有効になります。スマートモードを有効にすると、個々のファイルまたは複数のファイルを含むフォルダーをシームレスに操作できます。スマートモードを有効にする右上隅にあるスマートモードのステータスアイコンをクリックします。表示されるポップアップで、「有効にする」をクリックします。必要なインデックス作成と準...
C# のコードインスペクション
JetBrains、Fleet は、C# で 1000 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするに適用されます。コードインスペクションは、以下のグループに分類できます。インスペクションは固定重大度 'Error' です。これらのインスペクションはコンパイラーのエラーを検出し、無効化または設定する方法はありません。インスペクションは重大度を構成可能で、残りのコードの問題 (コンパイラー警告、実行時...
C# 文字列リテラルのコード分析
システム文字列のフォーマット方法:JetBrains Fleet は、、などのすべての .NET 文字列フォーマットメソッドの書式文字列と引数を分析します。文字列フォーマットメソッドの使用では、JetBrains Fleet は書式プレースホルダーをハイライトし、キャレットが次のいずれかにあるときに、対応する引数を持つプレースホルダーを同期的にハイライトします。引数と形式プレースホルダーが一致しない場合 (引数が欠落していると実行時にが発生します)、JetBrains Fleet は欠落または...
C# の値と null 可能性の分析
JetBrains Fleet は、値分析を実行して、可能性のある「null」逆参照、冗長なブール比較および null チェックを見つけるのに役立ちます。Null 許容値を分析するさまざまな方法:JetBrains Fleet は、いくつかの方法で値を分析できます。言語構成体の動作を理解します。以下の例では、パラメーターが null 可能性について明示的にチェックされたという事実に基づいて、JetBrains Fleet は、の値が確かに「null」である可能性があると合理的に想定し、対応する...
C# の契約のアノテーション
契約アノテーションでは、与えられた入力に対する期待される出力を定義することができます。言い換えれば、関数の参照型とブール型引数とその戻り値の間の依存関係を定義することができます。契約アノテーションのメカニズムにより、より簡単で安全な方法で消費できる API を作成できます。関数をで修飾することで、契約アノテーションを実装できます。ソースコードでそれを実行したい場合は、JetBrains.Annotations 名前空間を参照します。C# の外部アノテーションを使用して、既存のバイナリモジュールの...
C# のソーステンプレート
従来、テンプレートまたはスニペットはソースコードの外部で保存および管理されていました。通常、テンプレートは汎用的な定型コードを迅速に生成するのに役立つため、これは理にかなっています。ただし、現在のプロジェクトまたはソリューションにのみ関連する反復可能なコードを作成したい場合もあります。JetBrains Fleet を使用すると、ソーステンプレートを使用してこのようなタスクを効率化できます。使い方:従来のテンプレートとは対照的に、ソーステンプレートは、拡張メソッドとしてプロジェクトのコードのど...