我正在编写一个clang工具,但我对它很陌生,所以我遇到了一个问题,我在文档中找不到(还)。
我正在使用出色的 Matchers API 来查找一些我稍后想要在 AST 中操作的节点。问题是,clang 工具实际上会解析属于源文件的所有内容,包括iostream等头文件。由于我的操作可能包括一些重构,我绝对不想触及解析器找到的每一个东西。
现在我正在通过比较我匹配的节点的源文件与 argv 中的参数来处理这个问题,但不用说,这感觉不对,因为它仍然解析所有iostream代码 - 它只是在这样做时忽略它。我简直不敢相信没有办法只告诉 ClangTool 类似:
“仅匹配位置的源文件是用户提供给此工具的内容的节点”
考虑一下,只有可以为每个源文件单独创建 AST 才有意义,但我确实需要它们彼此了解或共享上下文知识,而且我也没有找到一种方法来做到这一点。
我觉得我在这里遗漏了一些非常明显的东西。
提前致谢 :)