正如前一章中所讨论的,Clang-Tidy 检查依赖于抽象语法树(AST)所提供的高级匹配功能。然而,这种方法可能不足以检测更复杂的问题,例如生命周期问题(即当一个对象或资源在其释放或超出作用域后仍访问或引用,这可能导致不可预测的行为或程序崩溃)。在本章中,我们将介绍基于控制流图(CFG)的高级代码分析工具。Clang 静态分析器是这类工具的一个优秀示例,而 Clang-Tidy 也集成了 CFG 的某些方面。我们将从典型的使用示例开始,然后深入探讨实现细节。本章将以一个自定义检查作为结尾,该检查采用高级技术,并将类复杂性的概念扩展到方法实现上。我们将定义环形复杂度,并展示如何使用 Clang 提供的 CFG 库来计算它。