容器大小与零的比较。¶
ID: cs/test-for-negative-container-size
Kind: problem
Security severity:
Severity: warning
Precision: very-high
Tags:
- reliability
- correctness
- logic
Query suites:
- csharp-security-and-quality.qls
集合、字符串或数组的大小始终至少为零。 检查其中一种类型的对象的大小是否大于或等于零将始终返回 true,而检查其大小是否小于零将始终返回 false。
建议¶
对于字符串,建议使用 System.String.IsNullOrEmpty
静态方法。 在其他情况下,请检查 Count
或 Length
字段是否大于(**而不是**等于)零。
示例¶
以下示例显示了如何创建受字符串长度与零比较保护的文件。 这可能会导致尝试创建名称为空的文件。
using System.IO;
using System;
class ContainerSizeCmpZero
{
private static FileStream MakeFile(String filename)
{
if (filename != null && filename.Length >= 0)
{
return File.Create(filename);
}
return File.Create("default.name");
}
}
在以下修改后的示例中,对零的检查已替换为对 String.IsNullOrEmpty
的调用。 这可以正确防止尝试创建名称为空的文件。
using System.IO;
using System;
class ContainerSizeCmpZero
{
private static FileStream MakeFile(String filename)
{
if (filename != null && !(String.IsNullOrEmpty(filename)))
{
return File.Create(filename);
}
return File.Create("default.name");
}
}
参考¶
MSDN 库(.NET Framework 4.5):String.IsNullOrEmpty 方法。