RI.IGNOREDCALL
如果调用不可变类的方法,则会出现 RI.IGNOREDCALL 错误。方法存在副作用,并且其结果不会分配到变量(结果将被忽略)。因为当函数修改其类的值时,编程假设了不同的 API,所以可能发生这个问题。Klocwork 查找的方法是:
- 任何返回字符串的 String 类的方法
- StringBuffer 类中的 toString() 方法
- InetAddress、BigInteger、BigDecimal 类的任何方法
- MessageDigest 类中的 digest(byte[]) 方法
漏洞与风险
对方法行为的误解将导致应用程序逻辑中存在缺陷。
缓解与预防
存储方法所返回的值,例如 a.trim()。
示例 1
复制
public void write(String indent, Writer writer) {
String description = getDescription();
if (description != null)
description.trim();
// ...
// write it
}
针对第 16 行报告 RI.IGNOREDCALL:“java.lang.String.trim()”返回的值被忽略。