使用 Clang 的抽象语法树(AST)和控制流图(CFG)进行分析有一些局限性。最显著的局限性如下所述[^1]: Clang的AST局限性:Clang的AST不适合进行数据流分析和控制流推理,因为丢失了重要的语言信息,导致了结果的不准确性和分析的低效。分析的健全性也是一个考虑因素,某些分析,如活性分析,如果足够精确而不是总是保守的,其精确性将非常有价值。 Clang的CFG问题:虽然Clang的CFG旨在弥合AST和LLVM IR之间的差距,但它遇到了已知的问题,具有有限的跨过程能力,并且缺乏足够的测试覆盖。 [^2]中提到的一个例子是与C++20中引入的新特性——C++协程相关。这个功能的某些方面是在Clang前端之外实现的,使用Clang的AST和CFG等工具无法看到。