JetBrains Rider 2024.1 ヘルプ

コード検査: 「CannotApplyEqualityOperatorAttribute」でマークされた型の値は、「Equals()」を使用して比較する必要があります。

JetBrains Rider は、== および != 演算子の使用が不適切であり、Equals() に置き換える必要がある型をマークするために、ReSharper.Annotations[CannotApplyEqualityOperator] 属性を提供します。この属性でマークされた 2 つのタイプが == または != を使用して比較されると、JetBrains Rider は警告を発行します。

JetBrains Rider は、null と比較するために等価演算子を使用することは自明であると想定しており、この場合は警告を発行しません。

[CannotApplyEqualityOperator] class NoEqualityOperators { } class TestEquality { bool Test() { var ne1 = new NoEqualityOperators(); var ne2 = new NoEqualityOperators(); return ne1 == ne2; // warning } }
[CannotApplyEqualityOperator] class NoEqualityOperators { } class TestEquality { bool Test() { var ne1 = new NoEqualityOperators(); var ne2 = new NoEqualityOperators(); return Equals(ne1, ne2); } }

また、JetBrains Rider が等価演算子で比較できないライブラリタイプをどのようにして認識するのか疑問に思われるかもしれません。このトリックは、.NET フレームワーククラスライブラリやその他の頻繁に使用されるライブラリの外部アノテーションを使用して行われます。これらのアノテーションは、JetBrains Rider インストールに含まれています。このインスペクションをトリガーする [CannotApplyEqualityOperator] 属性は、カスタム型にも使用できます。また、外部アノテーションのメカニズムを使用して、使用する他のコンパイル済みライブラリの型にアノテーションを付けることもできます。

関連ページ:

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

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

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

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

ソースコードのアノテーション

JetBrains Rider のコードアノテーションの恩恵を受ける最も簡単な方法は、ソースコードのシンボルにアノテーション属性を追加して、JetBrains Rider があなたのソリューションをより正確かつ正確に分析できるようにすることです。デフォルトでは、すべてのアノテーション属性クラスは属性でマークされているため、コンパイラーはコード内の属性の使用を無視します。つまり、'JetBrains.Annotations.dll' アセンブリへのバイナリ参照は生成されません。ただし、プロジェクト...