2017-10-13 8 views
0

私はTool.run(ToolAction)を使用してclangツールを実行しています。同じ入力ソースで複数のツールを実行する場合は、異なるToolActionを作成し、Tool.runを1つずつ呼び出すだけですか?または、私はどういうわけかASTFrontendActionを一緒につなぎますか?複数のclangパスを実行中

答えて

0

これは達成したいことによって異なります。

一度解析してからASTを使用して複数の作業を行う場合は、複数のASTConsumerを実装する方がよいでしょう。

class AggregateASTConsumer : public clang::ASTConsumer { 

public: 
    void HandleTranslationUnit(clang::ASTContext& Ctx) override { 
     for (auto consumer: consumers) 
       consumer.HandleTranslationUnit(Ctx); 

    } 
    std::vector<ASTConsumer*> consumers; 
} 

をしかし、あなたがしたいならば、あなたはツールを複数回実行する必要があり、いくつかの異なるオプションと入力ソースコードを再解析:

その後、集計ASTConsumerを作成することができます。

関連する問題