Ігноруйте попередження Xcode при використанні Cocoapods


417

Я використовую досить багато сторонніх бібліотек, у яких багато попереджень, після останніх оновлень Xcode. .

Чи є спосіб ігнорувати ці помилки? Виправити їх не допоможе, оскільки після кожного "встановлення" зміни відкидаються.

Відповіді:


967

Додайте до свого Podfile:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

# ignore warnings from a specific pod
pod 'FBSDKCoreKit', :inhibit_warnings => true

Потім виконайте: pod install


3
Як я це включаю? В даний час я використовую s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! і я отримую таку помилку: невизначений метод `inhibit_all_warnings! ' для # <Pod :: Специфікація для MyApp (1.0)>
KrauseFx

22
Як я можу вирішити таку проблему: я хочу, щоб попередження були приховані для деяких стручків, але не для всіх.
KrauseFx

3
@krausefx Вибачте, ваш коментар не побачив. Заради нащадків тепер ви можете відключити попередження на основі pod-pod, як показано в документах Podfile
сплав

2
@JohanKarlsson Видаліть директиву та запустіть pod installдля відновлення Pods.xcodeproj.
сплав

1
Зауважте, що це не виключає появи попереджень (проблем) під час Analyzeфази. Я запропонував кілька пропозицій щодо цього в іншій відповіді.
Джедіджа

28

Ви можете шукати "inhibit_all_warnings" у налаштуваннях збірки xcode PodBundle у своєму проектно-робочому просторі, встановивши значення "ТАК", воно приховає всі попередження про файл Pod.

Якщо ви зробите це у своєму робочому просторі, він також приховає весь ваш проект.


Це більш просте рішення, встановіть це у проекті стручків, і він вимикає лише попередження, пов’язані з стручками, а не попередження вашого проекту. Не потрібно повторно виконувати встановлення стручка.
Андрес Канелла

28
Не рекомендовано! З наступним pod installцей параметр буде відмінено, тому краще встановити його в Podfile!
electronix384128

4
Особисто мені це подобається, щоб кожне оновлення, яке я пам'ятаю, швидко ознайомилося з усіма попередженнями та переконалося, що вони нехтують.
Андрес Канелла

а як щодо залежностей у підспеку для локального роздрібника?
Арі Брагінський

Ви також можете встановити Swift Compiler - Warnings Policies> Suppress Warningsна Yes..., якщо inhibit_all_warningsя все ще мав 'characters' is deprecated: Please use String or Substring directly попередження в Pods. Це налаштування видалило це попередження.
Tiois

6

Хоча ця інша відповідь видалить попередження під час фази збірки, схоже, це не повністю виправитьAnalyze фазу (через що у нашої збірки CI все ще виникають проблеми).

Що працювало для мене (крім прийнятої відповіді):

  • Натисніть на Pods проект із Навігатора проектів
  • Виберіть фактичну Pod-ціль і натисніть наBuild Settings
  • Фільтр із фразою compiler flags
  • Додайте нове Other C Flagsзі значенням -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(або те, що вам потрібно відключити аналізатори) - така відповідь надає повний список прапорів, які слід спробувати - будь ласка, додайте його!

    Версія clangXcode 6.3.1, однак, не містить, insecureAPIтому ви можете видалити його зі цього списку. "Поточний" повний список є-w -Xanalyzer -analyzer-disable-checker -Xanalyzer alpha -Xanalyzer -analyzer-disable-checker -Xanalyzer core -Xanalyzer -analyzer-disable-checker -Xanalyzer cplusplus -Xanalyzer -analyzer-disable-checker -Xanalyzer deadcode -Xanalyzer -analyzer-disable-checker -Xanalyzer debug -Xanalyzer -analyzer-disable-checker -Xanalyzer llvm -Xanalyzer -analyzer-disable-checker -Xanalyzer osx -Xanalyzer -analyzer-disable-checker -Xanalyzer security -Xanalyzer -analyzer-disable-checker -Xanalyzer unix

Зауважте, що встановити це в Podsпроекті або Podsцілі не вийде . Я не впевнений, чому, але ви повинні встановити це для кожного фактичногоPod- цілі.

Ви також можете встановити прапорці компілятора ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coreтощо) на основі файлу .

Я також спробував пару інших методів (які можуть бути, а може і не знадобитися додатково до вищезазначених). Вони були виконані на самому PodsПроекті.


[1]

  • Фільтр із фразою analyzer
  • Переконайтеся, що Analyze During 'Build'встановлено значення NO.
  • Змініть усі налаштування на NO(включаючи Improper Memory Management)

[2]

  • Фільтр із фразою warnings
  • Змінити inhibit all warningsнаYES

Чомусь навіть відключення Analyzeкроку в схемі, здається, не працює.

Перейдіть до Product > Scheme > Manage Schemesвікна, натисніть на кожне Pod-*зі списку та натисніть Editкнопку. Клацніть Buildна списку зліва, а потім зніміть прапорець Analyze у правій частині Podцілі.

Я все ще плутаю, чому я не можу повністю відключити аналізатори Pods від аналізу, хоча, напевно, це може стосуватися "Знайти неявні залежності", що перевіряються в налаштуваннях схеми. Якщо це не було встановлено, це, схоже, щось інше знадобиться, щоб додаток підключився до стручків.


1
Примітка. На жаль, це не допомагає з CI, якщо ви виключаєте Pods та .xcworkspace зі свого сховища - використовуючи .gitignore.
RileyE

@RileyE цікаво - чи є вагомі підстави виключити їх із репо? Якщо так, чи працює для вас інша техніка на цій сторінці? (Я все ще відносна новачка в розробці iOS, так цікаво дізнатися більше)
Jedidja

Існує велика різниця щодо того, включати його чи ні . Мені не подобається включати його, оскільки я вважаю за краще, щоб мій підфіл був завжди точним, і я виявив деякі конфлікти між Podfile.lock та .xcworkspaces різних користувачів. Це просто перевага користувачам із сильно дискусійними плюсами та мінусами.
РайліE

@RileyE дякую за інформацію! Отже, якщо ми виключили Pods / .xcworkspace, немає проблем з проблемою?
Джедіджа

На жаль ні. Ось чому я наполягав на додаткових прапорах pod install.
РайліE

5

Крок: 1 Покладіть нижченаведений скрипт у свій Podfile.

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = "YES"
        end
    end
end

Крок 2. Зробіть pod install.


2
Я також повинен був додати наступне для Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.