CodeQL 文档

容器内容从未初始化

ID: java/empty-container
Kind: problem
Security severity: 
Severity: error
Precision: very-high
Tags:
   - reliability
   - maintainability
   - useless-code
   - external/cwe/cwe-561
Query suites:
   - java-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

在已知为空的对象上调用查询集合或映射内容的方法(例如 containsKeyisEmpty)。此类方法调用不会返回有意义的结果,并且可能表示代码缺失或逻辑错误。

建议

如果不需要集合/映射,请将其删除,或者确保它包含它应该包含的元素。

示例

以下示例代码迭代一个对象数组,以确定它是否包含重复元素。 它维护一个集合 seen,该集合旨在包含遍历数组时到目前为止看到的所有元素。 如果当前元素已包含在该集合中,则该方法返回 true,表示已找到重复项。

但是请注意,实际上从未向 seen 中添加任何元素,因此该方法始终返回 false

boolean containsDuplicates(Object[] array) {
	java.util.Set<Object> seen = new java.util.HashSet<Object>();
	for (Object o : array) {
		if (seen.contains(o))
			return true;
	}
	return false;
}

要解决此问题,应在循环体的末尾添加语句 seen.add(o);,以确保正确维护 seen

参考

  • ©GitHub 公司
  • 条款
  • 隐私