【问题标题】:With libclang, how can I enable and disable specific warnings?使用 libclang,如何启用和禁用特定警告?
【发布时间】:2013-01-04 23:47:43
【问题描述】:

我正在尝试使用 libclang API 以编程方式分析 C++ 项目。我的 clang 编译得很好,我的工具正在正确解析生成的 AST,但我不知道如何打开/关闭特定的警告。

这里是相关代码sn-p,我想启用/禁用“未使用变量”警告:

        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.
        .
        .
        .

【问题讨论】:

    标签: c++ clang llvm-clang libclang


    【解决方案1】:

    您的代码 sn-p 不是 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" };
    

    【讨论】:

      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多