2013-01-04 41 views
0

我正在嘗試使用libclang API以編程方式分析C++項目。我有鏗鏘編譯好,我的工具正確解析生成的AST,但我不知道如何打開/關閉特定的警告。使用libclang,我如何啓用和禁用特定的警告?

這裏是有關的代碼片段,我想啓用/禁用「未使用變量」警告:

 clang::DiagnosticOptions mDiagnosticOptions; 
     mDiagnosticOptions.ShowOptionNames  = 1; // prints warning, ie [-Wextra-tokens] 
     mDiagnosticOptions.Warnings.push_back("unused-variable"); // <----- DOESN'T WORK 

     // use mDiagnosticOptions further down for compile steps etc. 
     . 
     . 
     . 

回答

1

您的代碼段是不libclang API(clang-c/Index.h)的一部分。如果您使用libclang,那麼你通過調用獲得翻譯單元,以

CXTranslationUnit clang_parseTranslationUnit(
     CXIndex CIdx, 
     const char *source_filename, 
     const char * const *command_line_args, 
     int num_command_line_args, 
     struct CXUnsavedFile *unsaved_files, 
     unsigned num_unsaved_files, 
     unsigned options); 

您可以通過command_line_args參數禁用警告,例如,

const char* const command_line_args[] = { "-Wall", "-Wno-unused-variable" };