Abaikan peringatan Xcode saat menggunakan Cocoapods

417

Saya menggunakan banyak perpustakaan pihak ketiga yang memiliki banyak peringatan di dalamnya, setelah pembaruan Xcode terbaru. (misalnya pod Facebook SDK) Sekarang semua peringatan ini ditampilkan di Xcode saya di tempat saya ingin melihat peringatan atau kesalahan saya sendiri.

Apakah ada cara untuk mengabaikan kesalahan ini? Memperbaikinya tidak akan membantu, karena setelah setiap "instalasi pod" perubahan dibuang.

KrauseFx
sumber

Jawaban:

968

Tambahkan ke Podfile Anda:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Kemudian jalankan: pod install

paduan
sumber
3
Bagaimana saya memasukkannya? Saat ini saya menggunakan s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! dan saya mendapatkan kesalahan berikut: metode undefined `inhibit_all_warnings! ' untuk # <Pod :: Spesifikasi untuk MyApp (1.0)>
KrauseFx
22
Bagaimana saya bisa mengatasi masalah berikut: Saya ingin peringatan disembunyikan untuk beberapa pod, tetapi tidak untuk semuanya.
KrauseFx
3
@krausefx Maaf, tidak melihat komentar Anda. Demi anak cucu, kini Anda dapat menonaktifkan peringatan berdasarkan per-pod, seperti yang diperlihatkan dalam dokumen Podfile
alloy
2
@JohanKarlsson Hapus arahan dan jalankan pod installuntuk membuat ulang Pods.xcodeproj.
paduan
1
Perhatikan bahwa ini tidak menghalangi peringatan (masalah) muncul selama Analyzefase. Saya telah menawarkan beberapa saran untuk itu dalam jawaban yang berbeda.
Jedidja
28

Anda dapat mencari "inhibit_all_warnings" di pengaturan build xcode dari PodBundle di ruang kerja proyek Anda, atur nilainya menjadi "YA" itu akan menyembunyikan semua peringatan file Pod Anda.

Jika Anda melakukannya di ruang kerja Anda, itu akan menyembunyikan semua proyek Anda juga.

Teja Swaroop
sumber
Ini adalah solusi yang lebih sederhana, tetapkan ini di proyek pod dan itu hanya menonaktifkan peringatan terkait pod, bukan peringatan proyek Anda. Tidak perlu lagi menjalankan pemasangan pod.
Andres Canella
28
Tidak direkomendasikan! Dengan pengaturan selanjutnya pod installditimpa, jadi lebih baik atur di Podfile!
electronix384128
4
Secara pribadi saya suka ini sehingga setiap pembaruan saya ingat untuk melihat cepat bahwa semua peringatan dan memastikan mereka dapat diabaikan.
Andres Canella
bagaimana dengan dependensi dalam podspec untuk pod dev lokal?
Ari Braginsky
Anda juga dapat mengatur Swift Compiler - Warnings Policies> Suppress Warningske Yes... dengan inhibit_all_warningssaya masih memiliki 'characters' is deprecated: Please use String or Substring directly peringatan di Pods. Pengaturan ini menghapus peringatan ini.
Tiois
6

Meskipun jawaban lain ini akan menghapus peringatan selama fase pembuatan, sepertinya tidak benar-benar memperbaiki Analyzefase (yang menyebabkan pembangunan CI kami masih memiliki masalah).

Apa yang berhasil untuk saya (selain jawaban yang diterima) adalah:

  • Klik pada Podsproyek dari Navigator Proyek
  • Pilih Pod-Target aktual dan klikBuild Settings
  • Saring dengan frasa compiler flags
  • Tambahkan yang baru Other C Flagsdengan nilai -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(atau analis mana pun yang Anda perlukan dinonaktifkan) - jawaban ini memberikan daftar lengkap tanda untuk dicoba - harap perbarui!

    Versi clangdalam Xcode 6.3.1, tampaknya tidak termasuk insecureAPIsehingga Anda dapat menghapusnya dari daftar itu. Daftar lengkap "saat ini" adalah-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

Perhatikan bahwa pengaturan ini pada PodsProyek atau PodsTarget tidak akan berfungsi . Saya tidak yakin mengapa, tetapi Anda harus menetapkannya untuk setiap Pod-target aktual .

Anda juga dapat mengatur flag compiler ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer coredll.) Berdasarkan file-per .

Saya juga mencoba beberapa metode lain (yang mungkin atau mungkin tidak diperlukan selain yang di atas). Mereka dilakukan di PodsProyek itu sendiri.


[1]

  • Saring dengan frasa analyzer
  • Pastikan Analyze During 'Build'diatur ke NO.
  • Ubah semua pengaturan menjadi NO(termasuk Improper Memory Management)

[2]

  • Saring dengan frasa warnings
  • Ubah inhibit all warningskeYES

Untuk beberapa alasan, bahkan menonaktifkan Analyzelangkah dalam skema tampaknya tidak berhasil.

Pergi ke Product > Scheme > Manage Schemesjendela, klik masing-masing Pod-*dari daftar dan klik Edittombol. Klik Buildpada daftar sebelah kiri, dan kemudian hapus centang Analyze pada sisi kanan untuk Podtarget.

Saya masih bingung mengapa saya tidak bisa sepenuhnya menonaktifkan Pods yang sedang dianalisis, meskipun saya berharap itu mungkin ada hubungannya dengan "Temukan dependensi implisit" yang dicentang di pengaturan build skema. Namun, jika itu tidak dicentang, sepertinya sesuatu yang lain perlu terjadi agar aplikasi terhubung ke pod.

Jedidja
sumber
1
Catatan: Sayangnya, ini tidak membantu CI jika Anda mengecualikan Pods dan .xcworkspace dari repositori Anda - menggunakan .gitignore Anda.
RileyE
@RileyE menarik - apakah ada alasan bagus untuk mengeluarkannya dari repo? Jika demikian, apakah teknik lain pada halaman ini berfungsi untuk Anda? (Saya masih pemula dalam pengembangan iOS sehingga cukup ingin tahu lebih banyak)
Jedidja
Ada kesenjangan besar pada apakah akan memasukkannya atau tidak . Saya tidak suka memasukkannya karena saya lebih suka memastikan podfile saya selalu akurat dan saya telah menemukan beberapa konflik antara Podfile.lock pengguna yang berbeda dan .xcworkspaces. Ini hanyalah preferensi untuk pengguna dengan pro dan kontra yang sangat bisa diperdebatkan.
RileyE
@RileyE terima kasih atas informasinya! Jadi jika kita mengecualikan Pods / .xcworkspace tidak ada solusi untuk masalah masalah?
Jedidja
Sayangnya tidak. Itulah sebabnya saya telah mendorong untuk bendera tambahan pod install.
RileyE
5

Langkah: 1 Masukkan skrip di bawah ini ke dalam Podfile Anda.

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

Langkah 2. Lakukan pod install.

Toseef Khilji
sumber
2
Saya juga harus menambahkan yang berikut ini untuk Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani