0
我一直在使用Tool.run(ToolAction)
運行一個鐺工具。如果我想在同一個輸入源上運行多個工具,是否只需創建不同的ToolAction
,並且一個接一個地調用Tool.run
?或者我以某種方式將ASTFrontendAction
連在一起?運行多個鐺通行證
我一直在使用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;
}
但隨着一些不同的選項,那麼你應該運行工具多次,如果你想重新解析輸入源代碼。