【发布时间】:2021-03-29 17:54:49
【问题描述】:
public void UpdateCredentialSelect(ClientCredentials credential, bool selected)
{
onsSelectedCredentials.RemoveAll(x => x.Equals(null));
if (selected && !onsSelectedCredentials.Exists(x => x.name.Equals(credential.name)))
{
onsSelectedCredentials.Add(credential);
}
else
{
onsSelectedCredentials.Remove(credential);
}
onsSecurityScreen.UpdateDynamicItems();
onsSecurityScreen.UpdateSelectAllCheckmark();
}
通过 Coverity 报告运行时,“onsSelectedCredentials.RemoveAll(x => x.Equals(null));”存在问题此处的行,说明“check_after_deref:Null-checking x 表明它可能为空,但它已经在通向检查的所有路径上被取消引用。”那行代码的目的是读取列表中的当前值并删除任何已变为空的值,据我所知,没有发生空值检查。这是 Coverity 的误报还是我应该做些什么来解决这个问题?
【问题讨论】:
-
不确定这是否与您收到的错误/警告直接相关,但总的来说,我认为您应该改用
x == null(参见例如Equals(item, null) or item == null)