Я пытаюсь использовать 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.
.
.
.
Ваш фрагмент кода не является частью 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" };
Других решений пока нет …