0
私はTool.run(ToolAction)
を使用してclangツールを実行しています。同じ入力ソースで複数のツールを実行する場合は、異なるToolAction
を作成し、Tool.run
を1つずつ呼び出すだけですか?または、私はどういうわけかASTFrontendAction
を一緒につなぎますか?複数のclangパスを実行中
私はTool.run(ToolAction)
を使用してclangツールを実行しています。同じ入力ソースで複数のツールを実行する場合は、異なるToolAction
を作成し、Tool.run
を1つずつ呼び出すだけですか?または、私はどういうわけかASTFrontendAction
を一緒につなぎますか?複数のclangパスを実行中
これは達成したいことによって異なります。
一度解析してから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を作成することができます。