EN JP CN

RI.IGNOREDCALL

RI.IGNOREDCALL

RI.IGNOREDCALL エラーは、immutable クラスのメソッドの呼び出しが存在する場合に表示されます。このメソッドには副作用があり、その結果は変数に代入されません (単に無視されます)。これは、関数がそのクラスの値を変更する際にプログラミングでは異なる API が想定されているために発生します。Klocwork で検出される Java のメソッドは以下のとおりです。

  • String を返す String クラスのすべてのメソッド
  • StringBuffer クラスの toString() メソッド
  • InetAddress クラス、BigInteger クラス、BigDecimal クラスのすべてのメソッド
  • MessageDigest クラスの digest(byte[]) メソッド

脆弱性とリスク

メソッドの動作を誤解すると、アプリケーションロジックに欠陥を生じます。

軽減と防止

メソッド (a=a.trim() など) から返された値を保存してください。

例 1

13     public void write(String indent, Writer writer) {
14         String description = getDescription();
15         if (description != null)
16             description.trim();
17         // ...
18         // write it
19     }

RI.IGNOREDCALL が 16 行目に対して報告されています。'java.lang.String.trim()' による戻り値は無視されます。