Игнорировать все предупреждения в определенном файле, используя LLVM/Clang

В моем проекте iOS есть несколько файлов с некоторыми предупреждениями, и я хочу игнорировать эти предупреждения. Я не хочу отключать предупреждения во всем проекте (знаю, как это сделать), только некоторые конкретные файлы. Итак, есть ли способ полностью игнорировать все предупреждения из определенного файла?

Я использую LLVM 3.0 и Clang на Xcode 4.2.

Ответ 1

если вы просто используете clang, тогда вы должны использовать синтаксис pragma для поддерживаемых вами источников (при условии, что невозможно удалить предупреждение, соответствующим образом изменив программу).

вот синтаксис:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"

char b = 'df'; // no warning.

#pragma clang diagnostic pop

Если это программы, которые вы не можете изменить и не поддерживать, вы должны указать предупреждение для отключения файла, а не все. чтобы отключить все, вы можете добавить аргумент на файл -w. источники, а некоторые предупреждения (или не применяются) применяются с разными настройками сборки. clang-сообщения могут сообщать вам, какой флаг соответствует порожденному предупреждению.

Чтобы использовать Xcode для изменения флагов сборки файлов:

  • выберите цель
  • выберите фазу сборки
  • найдите файл для изменения аргументов на этапе "Источники компиляции"
  • дважды щелкните по ячейке "Компилятор флагов", чтобы изменить

Ответ 2

Я унаследовал проект, который содержал много кода 320, и эта база кода выдала мне несколько предупреждений и статических ошибок анализатора, что у меня не было никакого интереса к исправлению, так как я удалю этот код из проекта в ближайшем будущем.

Вы можете отключить предупреждения статического анализатора для определенного файла, включив следующий флаг компилятора:

-Xanalyzer -analyzer-disable-all-checks

Вы можете комбинировать это с -w, чтобы отключить предупреждения для этого файла. Это позволило мне продвигаться вперед с новой разработкой, в то время как не нужно было приставать к 30 предупреждениям, созданным этой базой кода.

Используя инструкции сверху: Чтобы использовать Xcode для изменения флагов сборки файлов:

  • выберите цель
  • выберите фазу сборки
  • найдите файл для изменения аргументов на этапе "Источники компиляции"
  • дважды щелкните по ячейке "Компилятор флагов", чтобы изменить
  • добавить "-w -Xanalyzer -analyzer-disable-all-checks" для подавления предупреждений и предупреждений clang

Ответ 3

С помощью ответа justin, вот как вы это делаете

1. Найдите имя предупреждения.

В моем случае его conversion

enter image description here

2. Добавление фаз сборки флага компилятора для каждого файла

Используйте фильтр, чтобы найти имя файла в источниках компиляции, введите -Wno-[error name] например. -Wno-conversion

enter image description here

Ответ 4

Вы можете выбрать конкретную цель → Настройки сборки, выполнить поиск запрета всех предупреждений и установить значение "ДА". Это отключит предупреждения для этой цели. Это может быть полезно, если вы используете какой-то код, такой как JSONKit, с cocoapods, и вы не хотите видеть, как компилятор плачет о предупреждениях:)