RI.IGNOREDCALL
RI.IGNOREDCALL エラーは、immutable クラスのメソッドの呼び出しが存在する場合に表示されます。このメソッドには副作用があり、その結果は変数に代入されません (単に無視されます)。これは、関数がそのクラスの値を変更する際にプログラミングでは異なる API が想定されているために発生します。Klocwork で検出される Java のメソッドは以下のとおりです。
- String を返す String クラスのすべてのメソッド
- StringBuffer クラスの toString() メソッド
- InetAddress クラス、BigInteger クラス、BigDecimal クラスのすべてのメソッド
- MessageDigest クラスの digest(byte[]) メソッド
脆弱性とリスク
メソッドの動作を誤解すると、アプリケーションロジックに欠陥を生じます。
軽減と防止
メソッド (a=a.trim() など) から返された値を保存してください。
例 1
コピー
public void write(String indent, Writer writer) {
String description = getDescription();
if (description != null)
description.trim();
// ...
// write it
}
RI.IGNOREDCALL が 16 行目に対して報告されています。'java.lang.String.trim()' による戻り値は無視されます。
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。