CodeQL 文档

使用 goto

ID: cpp/use-of-goto
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - maintainability
   - readability
   - language-features
Query suites:
   - cpp-security-and-quality.qls

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

使用 goto 语句会增加代码的理解和维护难度。 因此,不建议使用 goto 语句,除非将其作为一种机制来跳出多个嵌套循环或跳转到函数末尾的错误处理代码。 此规则标识了 goto 语句的复杂(因此难以理解)用法。 包含多个向前跳转的 goto 语句和多个向后跳转的 goto 语句的函数体会被突出显示。

建议

在大多数情况下,可以通过以下方式重写和/或重新排列代码:

  • 使用结构化控制流结构,例如 ifwhilefor

  • 使用 breakcontinue 提前停止循环迭代;或者

  • 使用 return 提前退出函数。 goto 语句可能是跳出深度嵌套循环或跳转到错误处理代码的最佳解决方案,而不会对函数的可读性产生负面影响。 此类用法不会被此规则标记。

参考资料

  • ©GitHub 公司
  • 条款
  • 隐私