2017-12-15 14 views
1

私のプラグインが実行されるASTのコードをコンパイルする際にエラーが発生した場合、私のclangプラグインが実際に何もしないようにします。clangプラグインでは、翻訳単位をコンパイルする際にエラーがあったかどうかをどのように確認できますか?

しかし、どのオブジェクトにコンパイル時に生成されたエラーのリストが含まれているのかわかりません。

TUコンパイル中に生成されたすべてのエラー(またはすべての診断)を取得するためのエラーまたはリストAPIがあるかどうかに関するブール検索がありますか?

ありがとうございます。

答えて

2

私は最終的にCompilerInstanceオブジェクトからエラーカウントを取得する方法を考え出し:

auto & ast_context = compiler_instance.getASTContext(); 
auto & diagnostics_engine = ast_context.getDiagnostics(); 
auto diagnostic_consumer = diagnostics_engine.getClient(); 
auto error_count = diagnostic_consumer->getNumErrors(); 
if (error_count > 0) { 
    llvm::report_fatal_error("Errors during compilation, plugin aborting"); 
} 

これが最善の方法である場合、私は知りませんが、私は上記を入れたときに、それは私のために働いています私のクラスIのonStartOfTranslationUnitのコードはast_matchers::MatchFinder::MatchCallbackに由来します。

関連する問題