容器内容从未初始化¶
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
对已知为空的对象调用查询集合内容的代码(例如 ContainsKey
或 Count
)。此类查询不会返回有意义的结果,并且可能表明代码缺失或存在逻辑错误。
建议¶
如果不需要该集合,请将其删除,或者确保它包含正确的数据。
示例¶
以下示例代码应该返回日期的名称,但由于集合 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];
}
}