例:
if (array.length < index) {
System.out.println(array[index]);
} // 配列のインデックスが常に範囲を超えている
if (str == null) System.out.println("str is null");
System.out.println(str.trim());
// 最後のステートメントが NPE をスローする可能性がある
@NotNull
Integer square(@Nullable Integer input) {
// メソッド契約に違反している
return input == null ? null : input * input;
}
このインスペクションの動作は、nullability アノテーション、@Contract アノテーション、@Range アノテーションなどのさまざまなアノテーションで制御できます。
インスペクションの構成:
@Nullable アノテーションを伝播することを提案します。 また、「アノテーションの構成」ボタンを使用すると、null 許容性アノテーションを構成できます。null リテラルが渡される呼び出しサイトがあるメソッドパラメーターを報告するには、「非 null が必要なパラメーターで null リテラルの引数を使用している場合に報告する」オプションを使用します。@Nullable アノテーションがあるものの、常に null でない値を返すメソッドを報告するには、「常に null でない値を返す null 許容メソッドを報告する」オプションを使用します。 この場合は、アノテーションを @NotNull に変更することが推奨されます。assert ステートメントの取り扱いを制御するには、「assert ステートメントを無視する」オプションを使用します。 このオプションは、デフォルトでは無効化されており、アサーションは実行されるものとして扱われます (-ea モード)。 このオプションが有効な場合、アサーションは完全に無視されます (-da モード)。IntelliJ IDEA 2022.3 より前は、このインスペクションは "定数条件および例外" インスペクションの一部でした。 現在、そのインスペクションは "定数値" と "null 許容性とデータフローの問題" の 2 つのインスペクションに分割されています。