☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

while 循环体不应为空

9.3.5 ID_while_emptyBlock
目录 › next › previous

空的 while 循环将功能全部压缩到了条件表达式中,各子句的职责划分不明确,可读性较差。

示例:

while (flg.test_and_set());     // Non-compliant
i = (i * j) % n;                // The indent is odd here
flg.clear();

示例代码循环检测并设置某标志位,这些功能被压缩到了循环条件中,而且容易使人误以为下一行代码也与循环有关。

应改为:

while (true) {                  // Compliant
    if (!flg.test_and_set()) {
        break;
    }
}
i = (i * j) % n;
flg.clear();

循环体的内容才是循环主体功能的体现,不应为空。

参考

CWE-1071 C++ Core Guidelines ES.85
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.