CodeQL 文档

容器大小与零的比较。

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

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

集合、字符串或数组的大小始终至少为零。 检查其中一种类型的对象的大小是否大于或等于零将始终返回 true,而检查其大小是否小于零将始终返回 false。

建议

对于字符串,建议使用 System.String.IsNullOrEmpty 静态方法。 在其他情况下,请检查 CountLength 字段是否大于(**而不是**等于)零。

示例

以下示例显示了如何创建受字符串长度与零比较保护的文件。 这可能会导致尝试创建名称为空的文件。

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");
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私