CodeQL 文档

未使用标签

ID: cs/unused-label
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - maintainability
   - useless-code
Query suites:
   - csharp-security-and-quality.qls

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

未使用的标签没有任何作用,只会使源代码混乱。这可能表明代码不完整,或者代码中包含一个 goto 语句使用了错误的标签的错误。

建议

确保所有 goto 语句都使用正确的标签,如果不再需要该标签,请将其删除。

另一种解决方案是重写代码,不使用 goto 语句,这样通常会更清晰。

示例

以下示例包含一个未使用的标签 Error,这意味着永远不会显示错误消息。可以通过跳转到正确的标签或重写代码而不使用 goto 语句来修复代码。

static void Main(string[] args)
{
    using (var file = File.Open("values.xml", FileMode.Create))
    using (var stream = new StreamWriter(file))
    {
        stream.WriteLine("<values>");
        foreach (var arg in args)
        {
            uint value;
            if (UInt32.TryParse(arg, out value))
                stream.WriteLine("    <value>{0}</value>", value);
            else
                goto Finish;  // Should be goto Error
        }
        goto Finish;
        Error:  // BAD: Unused label
        Console.WriteLine("Error: All arguments must be non-negative integers");
        Finish:
        stream.WriteLine("</values>");
    }
}

参考资料

  • MSDN,C# 参考:goto

  • ©GitHub 公司
  • 条款
  • 隐私