JD.LIST.ADD
当在容器上执行运算(如 addAll、removeAll、retainAll 或 containsAll),但参数是容器本身时,发生 JD.LIST.ADD。这肯定是拼写错误。
漏洞与风险
这不是其本身的错误,但因其没有意义,因此存在逻辑错误。例如,程序员写入的是 con1.addAll(con1),而不是 con1.addAll(con2)。这种错误的严重程度取决于使用代码的位置和方式。
缓解与预防
修复方法参数的名称,或者可以将 removeAll 替换为 list.clean()。
示例 1
复制
private Collection foo(Collection list12_3,
Collection list12_4) {
if (list12_3.size() < list12_4.size()) {
list12_3.addAll(list12_4);
return list12_3;
} else {
list12_4.addAll(list12_4);
return list12_4;
}
}
针对第 17 行的 addAll 调用报告 JD.LIST.ADD:容器 list12_4 调用 addAll,其中参数是其本身。该代码什么也没做,或者有更简单的方法来实现。可能是拼写错误。