未使用标签¶
ID: cs/unused-label
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- maintainability
- useless-code
Query suites:
- csharp-security-and-quality.qls
未使用的标签没有任何作用,只会使源代码混乱。这可能表明代码不完整,或者代码中包含一个 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。