CodeQL 文档

容器内容从未初始化

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

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

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

建议

如果不需要该集合,请将其删除,或者确保它包含正确的数据。

示例

以下示例代码应该返回日期的名称,但由于集合 daysOfWeek 从未填充,因此无法正常工作。运行此代码时,会引发 ArgumentOutOfRangeException 异常。

class Calendar
{
    IList<string> daysOfWeek = new List<string>();

    public string dayName(int day)
    {
        return daysOfWeek[day - 1];
    }
}

通过使用正确的数据填充变量 daysOfWeek 可以解决此问题。

class CalendarFix
{
    IList<string> daysOfWeek = new List<string>
    {
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday",
        "Sunday"
    };

    public string dayName(int day)
    {
        return daysOfWeek[day - 1];
    }
}
  • ©GitHub, Inc.
  • 条款
  • 隐私