JetBrains Rider 2026.1 Help

価値と無効性の分析

JetBrains Rider は値分析を実行し、「null」参照の可能性や冗長なブール比較、null チェックを検出するのに役立ちます。

Null 許容値を分析するさまざまな方法

JetBrains Rider では、いくつかの方法で値を分析できます:

  • 言語構成体の動作を理解します。

    次の例では、パラメーター obj の null 許容性が明示的にチェックされていることに基づき、JetBrains Rider は obj の値が実際に 'null' である可能性があると判断し、対応する警告を表示します:

    JetBrains Rider: null 可能性分析
  • コード アノテーション属性[CanBeNull][NotNull][ItemCanBeNull][ItemNotNull] )は、 Null 許容参照型が無効な場合に利用されます。

    次の例では、メソッド Bar[CanBeNull] 属性が付与されています。この情報をもとに、JetBrains Rider は Bar の戻り値が null になる可能性があり、その上でメソッドを呼び出すと「null」参照が発生する可能性があることを警告しています:

    JetBrains Rider: null 可能性分析
  • C# 8.0 以降では、プロジェクトで Null 許容参照型が有効な場合、JetBrains Rider はコンパイラー解析の結果を再利用できます。

等価比較分析

JetBrains Rider は、以下の方法で等値演算子(== および != )の使用を分析できます:

値と null 可否の分析モード

JetBrains Rider では、異なるモードで値を分析できます:

楽観的

デフォルトでは、値解析モードは楽観的です。 このモードでは、値が明示的に null 許容性をチェックされた場合、またはシンボルに [CanBeNull] または [ItemCanBeNull] 属性が付与されている場合のみ、JetBrains Rider は 'null' 参照の可能性について警告します。 楽観的モードは上記の例で示されています。

悲観的

このモードでは、値が明示的に null 許容性をチェックされていないすべての状況で、JetBrains Rider は 'null' 参照の可能性について警告します。ただし、シンボルに [NotNull] または [ItemNotNull] 属性が付与されている場合を除きます。

値分析モードを変更する、または分析を無効化するには、JetBrains Rider 設定 の エディター | インスペクション設定 ページで 値分析モード⁠ 環境設定 Ctrl+Alt+S を構成してください。

null 許容参照型

null 許容参照型 (NRT) が有効化されている場合、JetBrains Rider は C# コンパイラー分析の結果を再利用します。

NRT は、null 値可能性分析の全体的な精度を向上させますが、値が #nullable コンテキストのないコードから取得される場合など、NRT 契約に違反する場合があります。 このような場合、null 値可能性チェック (たとえば、 式は常に「true」または「false」です) で誤検知の警告が表示されることがあります。 null 値可能な API 契約を無視し、コード内の値に対する以前の操作で null 値になるかどうかが保証されている場合にのみ問題を報告するように選択できます。

この動作は、 Alt+Enter メニューから直接変更できます。

JetBrains Rider: null 許容参照型

…または JetBrains Rider 設定 の エディター | インスペクション設定 ページで null 許容参照型の警告モード オプションを使用します。

JetBrains Rider が null 許容 API コントラクトを無視する場合、null 許容性分析はプログラムの制御フローに基づいて冗長な null チェックを検出します。 例えば:

var myString = ApiMethod(); if (myString is null) throw new ApplicationException("the string is null"); // warning 'Expression is always true' // 'myString' cannot be null because it's already checked for null in our code if (myString != null) Console.WriteLine(myString);

NRT と JetBrains Rider による NRT サポートの詳細については、こちらのウェビナー録画をご覧ください:

値分析のさらなる例

こちらは、JetBrains Rider の値と null 許容性分析の追加例です:

  • 単純な LINQ クエリで既に null 許容性チェックが行われている場合、JetBrains Rider はさらに null 許容性チェックを行うのは冗長なことを通知します:

    コレクション項目の冗長な NULL 可否チェック
  • [ItemNotNull] 属性を持つコレクションにマークを付けた場合も同じことが起こります。

    コレクション項目の冗長な NULL 可否チェック
  • 次の例は、 悲観的モードが有効になっている場合の値分析がどのように機能するかを示しています。 リストの値については null 可能性がチェックされていますが、リスト項目についてはチェックされていません。 そのため、JetBrains Rider はここで「null」参照の可能性について警告します。

    コレクション項目の冗長な NULL 可否チェック
2026 年 6 月 12 日