我根据以下链接编写了一个自定义 clang 前端工具。 http://clang.llvm.org/docs/RAVFrontendAction.html
现在我将 clang 源代码本身提供给我的前端工具进行静态分析。我的工具为此测试用例抛出异常 https://llvm.org/svn/llvm-project/cfe/trunk/test/CXX/expr/expr.const/p2-0x.cpp
从这个测试用例的文档来看,它是为未定义的行为而编写的。在此测试中运行 ClangTool 时,即使在控件进入 HandleTranslationUnit 之前,它也会引发 stackoverflow 异常。
由于 clang 可以为上述测试用例生成 AST,我认为异常可能在编译期间出现。现在的问题是我不能继续访问这些文件的 AST 节点,因为我不关心输入源文件的语义。我只对静态分析感兴趣。
这是预期的行为吗?那么如何遍历生成的 AST 并访问节点。我真的被困在这一刻,不知道如何继续。请你帮我解决这个问题。
提前致谢!
谢谢,赫曼特·巴加特