Cocoapod kullanırken Xcode uyarılarını yoksay


417

En son Xcode güncellemelerinden sonra içinde birçok uyarı bulunan çok sayıda üçüncü taraf kitaplığı kullanıyorum. (örneğin Facebook SDK bölmesi) Şimdi tüm bu uyarılar kendi uyarılarımı veya hatalarımı görmek istediğim yerde X kodumda gösteriliyor.

Bu hataları görmezden gelmenin bir yolu var mı? Bunları düzeltmek yardımcı olmaz, çünkü her "bölme kurulumundan" sonra değişiklikler atılır.

Yanıtlar:


968

Pod dosyasına ekle:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Sonra yürütün: pod install


3
Bunu nasıl eklerim? Şu anda 'Facebook-iOS-SDK' s.inhibit_all_warnings! ve şu hatayı alıyorum: tanımsız yöntem `inhibit_all_warnings! ' <Pod :: MyApp (1.0) için şartname>
KrauseFx

22
Aşağıdaki sorunu nasıl çözebilirim: Uyarıların bazı kapsüller için gizlenmesini istiyorum, ancak hepsi için değil.
KrauseFx

3
@krausefx Üzgünüz, yorumunuzu görmediniz. Gelecek nesiller için, Podfile dokümanlarında gösterildiği gibi kapsül başına temelde uyarıları devre dışı bırakabilirsiniz: docs.cocoapods.org/podfile.html#inhibit_all_warnings_bang
alaşım

2
@JohanKarlsson Yönergeyi kaldırın ve Pods.xcodeproj dosyasını pod installyeniden oluşturmak için çalıştırın.
alaşım

1
Bunun, uyarıların (sorunların) Analyzeaşama sırasında görünmesini engellemediğini unutmayın . Farklı bir cevapta bazı önerilerde bulundum.
Jedidja

28

Proje çalışma alanınızdaki PodBundle'ın xcode derleme ayarlarında "inhibit_all_warnings" için arama yapabilirsiniz, bu değeri "EVET" olarak ayarlayın, tüm Pod dosya uyarılarınızı gizler.

Bunu çalışma alanınıza yaparsanız, tüm projenizi de gizleyecektir.


Bu daha basit bir çözümdür, bunu kapsül projesine ayarlayın ve proje uyarılarınızı değil, yalnızca kapsülle ilgili uyarıları devre dışı bırakır. Pod kurulumunu yeniden yürütmeye gerek yoktur.
Andres Canella

28
Tavsiye edilmez! Bir sonraki ile pod installbu ayar geçersiz kılınır, bu yüzden Podfile'da daha iyi ayarlayın!
electronix384128

4
Şahsen bunu seviyorum, böylece hatırladığım her güncelleme tüm uyarılara hızlı bir şekilde bakmayı ve ihmal edilebilir olduklarını kontrol etmeyi hatırlıyorum.
Andres Canella

yerel geliştirici kapsülü için bir podspec'deki bağımlılıklara ne dersiniz?
Ari Braginsky

Ayrıca ayarlayabilirsiniz Swift Compiler - Warnings Policies> Suppress Warningsiçin Yes... ile inhibit_all_warningshala vardı 'characters' is deprecated: Please use String or Substring directly Pods içinde uyarı. Bu ayar bu uyarıyı kaldırdı.
Tiois

6

Bu diğer yanıt , oluşturma aşaması sırasında uyarıları kaldıracak olsa da , Analyzeaşamayı tamamen düzelttiği görülmemektedir (bu da CI derlememizin hala sorunlara neden olmasına neden olmuştur).

Benim için işe yarayan (kabul edilen cevaba ek olarak):

  • PodsProje Gezgini'nden projeye tıklayın
  • Gerçek Pod-Hedefi seçin ve tıklayınBuild Settings
  • İfadeyle filtreleme compiler flags
  • Other C FlagsDeğeri olan yeni bir özellik ekleyin -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(veya devre dışı bırakmanız gereken hangi analizörleri) - bu yanıt denemek için bayrakların tam listesini sağlar - lütfen oy verin!

    Bununla birlikte clang, Xcode 6.3.1'deki sürümü içermiyor gibi görünüyor, insecureAPIböylece listeden kaldırabilirsiniz. "Geçerli" tam liste-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

Bunu PodsProje veya PodsHedef üzerinde ayarlamanın işe yaramayacağını unutmayın . Neden olduğundan emin değilim, ama bunu her gerçek Pod-hedef için ayarlamanız gerekiyor .

Derleyici bayraklarını ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer corevb.) Her dosya için ayrı ayrı da ayarlayabilirsiniz .

Ayrıca birkaç başka yöntem denedim (yukarıdakilere ek olarak gerekli olabilir veya olmayabilir). PodsProjenin kendisi üzerinde gerçekleştirildi .


[1]

  • İfadeyle filtreleme analyzer
  • Olarak Analyze During 'Build'ayarlandığından emin olun NO.
  • Tüm ayarları NO(dahil Improper Memory Management) olarak değiştirin

[2]

  • İfadeyle filtreleme warnings
  • Değişim inhibit all warningsiçinYES

Bazı nedenlerden dolayı, Analyzeprogramdaki adımı devre dışı bırakmak bile işe yaramıyor gibi görünüyor.

Git Product > Scheme > Manage Schemes, pencerenin her tıklayarak Pod-*listeden tıklamanız Editdüğmesini. BuildSol taraftaki listeyi tıklayın ve ardından hedefin sağ tarafındaki işareti kaldırın .AnalyzePod

Ben hala neden Pods analiz edilmesini tamamen devre dışı bırakamıyorum olarak karıştı, ancak ben şemanın inşa ayarlarında kontrol edilen "Örtülü bağımlılıkları bulmak" ile ilgili olabilir bekliyoruz. Bu işaretlenmemiş olsaydı, uygulamanın bölmelere bağlanması için başka bir şeyin olması gerekecek gibi görünüyor.


1
Not: Maalesef, .gitignore'unuzu kullanarak Pod'ları ve .xcworkspace'i deponuzdan hariç tuttuğunuzda bu CI ile yardımcı olmaz.
RileyE

@RileyE ilginç - bunları bir repodan hariç tutmak için iyi bir neden var mı? Öyleyse, bu sayfadaki diğer teknik işinize yarıyor mu? (Hala daha fazla bilgi edinmek için iOS geliştirme konusunda nispeten yeni bir
acemiyim

Onu dahil edip etmeme konusunda büyük bir ayrım var . Pod dosyamın her zaman doğru olduğundan emin olmak için tercih etmeyi sevmiyorum ve farklı kullanıcının Podfile.lock ve .xcworkspaces arasında bazı çakışmalar buldum. Bu, kesinlikle tartışmalı artıları ve eksileri olan kullanıcıların tercihi.
RileyE

@RileyE bilgi için teşekkürler! Pods / .xcworkspace'i hariç tutsaydık, sorunların çözümü için bir çözüm yok mu?
Jedidja

Ne yazık ki değil. Bu yüzden ek bayraklar için bastırıyorum pod install.
RileyE

5

Adım: 1 Aşağıdaki komut dosyasını Podfile'ınıza koyun.

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. Adım pod install.


2
Ayrıca Swift config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
Pods
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.