アノテーションを使用してコードインスペクションを改善する
コード検査などの JetBrains Rider の多くの機能は、問題を検出し、改善を提案し、他の方法でお手伝いするために、言語構成の動作を知ることに大きく依存しています。
ただし、この種の分析ではすべてを検出できるわけではありません。例: メソッドがフォーマットメソッドとして設計されている場合、メソッドの呼び出しに必要な引数が含まれていない場合、構造解析では潜在的な問題は見つかりません。
この場合や他の多くの場合、JetBrains Rider の JetBrains.Annotations
は非常に役立ちます。このフレームワークで宣言された属性を使用することにより、JetBrains Rider で必要な方法でコードを分析することができます。例: メソッドに [StringFormatMethod]
のアノテーションを付けて、System.String.Format()
と同じように機能するカスタムメソッドを示すことができます。
これは最も単純な例であり、より複雑な使用例を持つ他の役立つ属性があります。これらの属性の完全なリストはリファレンスにあります。
ほとんどの場合、コードアノテーション属性は特定のコードインスペクションを有効にします。
StringFormatMethodAttribute
は、文字列のフォーマット方法の誤用を検出するのに役立ちます。CanBeNullAttribute
およびNotNullAttribute
は、「「値を null にすることはできない」属性でマークされたエンティティへの「null」割り当ての可能性」インスペクションに関連付けられています。詳細については、価値と無効性の分析を参照してください。CannotApplyEqualityOperatorAttribute
は ' 'CannotApplyEqualityOperatorAttribute' でマークされた '==' 型と比較 ' インスペクションにバインドされていますContractAnnotationAttribute
はあなたの機能のための契約を定義し、対応するインスペクションをオンにするために使用することができます。例:[ContractAnnotation("input:null => false")]
を使用して、パラメーターs
がnull
の場合は常にfalse
を返す関数bool Foo(object input)
をコンシューマーに通知することができます。
また、コードアノテーションにより、クイックフィックス、コード補完の提案、およびアノテーション付きアイテムのコード生成機能が可能になります。アノテーションはソーステンプレートを作成して使用するためにも必要です。
JetBrains Rider では、コードシンボルに次の 2 つの方法でアノテーションを付けることができます。
上の例に示すように、ソースコード内のシンボルにアノテーションを付けることができます。この場合、プロジェクトで
JetBrains.Annotations
名前空間を参照する必要があります。詳細については、ソースコードのアノテーションを参照してください。ソースにアクセスできない場合でも、コンパイルされたライブラリコード内のシンボルにアノテーションを付けることができます。詳細については、外部アノテーションを参照してください。
関連ページ:
![](https://resources.jetbrains.com/help/img/rider/2024.1/Code_Analysis__Code_Highlighting__Warnings__2.png)
コードインスペクション
JetBrains Rider は、サポートされているすべての言語で 2500 を超えるコードインスペクションを提供します。これらのインスペクションは、開いているすべてのファイルの設計時にコードの問題を検出してハイライトするために適用されます。また、特定の範囲内のすべてのコードの問題を検出するために適用されます。インスペクション JetBrains Rider が提供するコードの種類を調べるには、異なる言語の JetBrains Rider コードインスペクションの全リストをご覧ください。コードイ...
![](https://pleiades.io/icons/rider.png)
コードアノテーション属性
フレームワークは、以下で説明する多くの属性を提供します。これらの属性をコードで使用するには、ソースコードのアノテーションセクションの説明に従ってを参照する必要があります。アノテーション属性:CanBeNullAttribute マークされた要素の値がになることがあることを示します。そのため、使用前にのチェックが必要です。サンプル [CanBeNull] object Test() => null; void UseTest() { var p = Test(); var s = p.ToSt...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Code_Analysis__Value_Analysis__2.png)
価値と無効性の分析
JetBrains Rider は、価値分析を実行して、可能な「null」逆参照ならびに冗長ブール比較および null ・チェックを見つけるのを支援します。Null 許容値を分析するさまざまな方法:JetBrains Rider は、いくつかの方法で値を分析できます。言語構成体の動作を理解します。次の例では、パラメーターが明示的に null 可能性をチェックされたという事実に基づいて、JetBrains Rider はの値が実際に 'null' であると合理的に想定し、対応する警告を表示する...
![](https://resources.jetbrains.com/help/img/rider/2024.1/contract_annotations.png)
契約アノテーション
契約アノテーションでは、与えられた入力に対する期待される出力を定義することができます。言い換えれば、関数の参照型とブール型引数とその戻り値の間の依存関係を定義することができます。契約アノテーションのメカニズムにより、より簡単で安全な方法で消費できる API を作成できます。を使って関数を装飾することによって契約アノテーションを実装することができます。あなたのソースコード、JetBrains.Annotations 名前空間を参照するでそれをやりたいなら。外部アノテーションを使用して既存のバイナリ...
![](https://resources.jetbrains.com/help/img/rider/2024.1/Code_Generation__Implement_Override__quick-fix.png)
コード生成
JetBrains Rider は、定型コードを生成するさまざまな方法を提供します。例: 宣言されていないコードシンボルを使用し、これらのシンボルを用途に基づいて自動的に生成したり、型メンバーを生成したりすることができます。現在のファイルで設計時コードインスペクションが有効になっている場合、JetBrains Rider は足りないメンバーを検出し、足りないメンバーを実装するために対応するクイックフィックスを提案します。コンテキストアクションとコードテンプレートを使用すると、コードを生成するその...
![](https://resources.jetbrains.com/help/img/rider/2024.1/SourceTemplateTargetExpression.png)
ソーステンプレート
従来、テンプレートまたはスニペットは、ソースコードの外部で保存および管理されていました。通常、テンプレートは汎用定型コードをすばやく作成するのに役立つため、これは理にかなっています。これらの目的のために、JetBrains Rider は多くの事前定義されたライブテンプレート、サラウンドテンプレート、およびファイルテンプレートを提供します。これらのタイプの独自のテンプレートを作成することもできます。ただし、現在のプロジェクトまたはソリューションにのみ関連する繰り返し可能なコードを生成したい場合が...