Игнорировать все предупреждения в определенном файле, используя 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, и вы не хотите видеть, как компилятор плачет о предупреждениях:)