Игнорировать все предупреждения в определенном файле, используя LLVM / Clang - PullRequest
64 голосов
/ 26 октября 2011

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

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

Ответы [ 4 ]

90 голосов
/ 11 ноября 2011

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

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

-Xanalyzer -analyzer-disable-all-checks

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

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

  1. выберите цель
  2. выберите этап сборки
  3. найдите файл для изменения аргументов в фазе «Компиляция источников»
  4. дважды щелкните по ячейке «Флаги компилятора» для редактирования
  5. добавить «-w -Xanalyzer -analyzer-disable-all-проверок» для подавления предупреждений и предупреждений лягушки
62 голосов
/ 26 октября 2011

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

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

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

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

#pragma clang diagnostic pop

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

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

  • выберите цель
  • выберите этап сборки
  • найдите файл для изменения аргументов в фазе «Компиляция источников»
  • дважды щелкните по ячейке «Флаги компилятора» для редактирования
20 голосов
/ 03 февраля 2015

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

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

В моем случае это conversion

enter image description here

2.Добавить для каждого файла флаг компилятора этапы сборки

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

enter image description here

2 голосов
/ 29 ноября 2013

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

...