2017-10-13 41 views
0

我一直在使用Tool.run(ToolAction)運行一個鐺工具。如果我想在同一個輸入源上運行多個工具,是否只需創建不同的ToolAction,並且一個接一個地調用Tool.run?或者我以某種方式將ASTFrontendAction連在一起?運行多個鐺通行證

回答

0

這取決於你想達到什麼。

如果你想解析一次,然後用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; 
} 

但隨着一些不同的選項,那麼你應該運行工具多次,如果你想重新解析輸入源代碼。