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


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

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

4 60

4 ответа:

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

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

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

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

#pragma clang diagnostic pop

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

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

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

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

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

-Xanalyzer -analyzer-disable-all-checks

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

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

  1. выберите целевую
  2. выберите этап сборки
  3. найдите файл для изменения аргументов в фазе "компиляция источников"
  4. дважды щелкните его ячейку "флаги компилятора" для редактирования
  5. добавить " - w-Xanalyzer - анализатор-отключить-все-проверки " для подавления предупреждений и лязг предупреждений

С помощью ответа Джастина, это то, как вы делаете

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

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

enter image description here

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

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

enter image description here

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