CodeQL 文档

具有相同变量的嵌套循环

ID: cs/nested-loops-with-same-variable
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - maintainability
   - correctness
   - logic
Query suites:
   - csharp-security-and-quality.qls

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

内部循环不应写入外部循环的迭代变量。如果内部循环更改了外部循环的迭代变量,则通常是因为程序员错误地输入了内部循环的迭代变量。如果这是预期行为,则这是一个不良做法的示例。循环的设计应该使每个循环都控制自己的迭代。迭代在循环之间共享的嵌套循环更难以理解和维护。

建议

如果代码中有错误,请更正。如果这是预期行为,请考虑重新设计循环迭代的控制方式。这将使其他程序员更容易理解和维护代码。

示例

此示例将永远运行,因为内部循环递增的是 i 而不是 j。

class NestedLoopsSameVariable
{
    static void Main(string[] args)
    {
        for (int i = 0; i < 2; i++)
        {
            for (int j = 0; j < 2; i++)
            {
                Console.WriteLine(i + " " + j);
            }
        }
    }
}

参考

  • MSDN:for

  • ©GitHub, Inc.
  • 条款
  • 隐私