运行多个铛通行证
问题描述:
我一直在使用Tool.run(ToolAction)
运行一个铛工具。如果我想在同一个输入源上运行多个工具,是否只需创建不同的ToolAction
,并且一个接一个地调用Tool.run
?或者我以某种方式将ASTFrontendAction
连在一起?运行多个铛通行证
答
这取决于你想达到什么。
如果你想解析一次,然后用AST做多件事情,你应该更好地实现多个ASTConsumers。
然后你就可以创建聚合ASTConsumer:
class AggregateASTConsumer : public clang::ASTConsumer {
public:
void HandleTranslationUnit(clang::ASTContext& Ctx) override {
for (auto consumer: consumers)
consumer.HandleTranslationUnit(Ctx);
}
std::vector<ASTConsumer*> consumers;
}
但随着一些不同的选项,那么你应该运行工具多次,如果你想重新解析输入源代码。