使用libclang,如何启用和禁用特定警告?

时间:2013-01-04 23:47:44

标签: c++ clang llvm-clang libclang

我正在尝试使用libclang API以编程方式分析C ++项目。我有clang编译正常,我的工具正在解析生成的AST,但我无法弄清楚如何打开/关闭特定的警告。

这里是相关的代码片段,我想启用/禁用“未使用的变量”警告:

        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 个答案:

答案 0 :(得分: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" };