Bỏ qua các cảnh báo Xcode khi sử dụng Cocoapods


417

Tôi sử dụng khá nhiều thư viện bên thứ ba có nhiều cảnh báo trong đó, sau các bản cập nhật Xcode mới nhất. (ví dụ: nhóm SDK Facebook) Bây giờ tất cả các cảnh báo này được hiển thị trong Xcode của tôi ở nơi tôi muốn xem các cảnh báo hoặc lỗi của riêng mình.

Có cách nào để bỏ qua những lỗi này? Sửa chúng sẽ không giúp ích gì, vì sau mỗi lần "cài đặt pod", các thay đổi sẽ bị loại bỏ.

Câu trả lời:


968

Thêm vào Podfile của bạn:

platform :ios

# ignore all warnings from all pods
inhibit_all_warnings!

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

Sau đó thực hiện: pod install


3
Làm thế nào để tôi bao gồm điều đó? Hiện tại tôi đang sử dụng s.dependency 'Facebook-iOS-SDK' s.inhibit_all_warnings! và tôi nhận được lỗi sau: phương thức không xác định `immunit_all_warnings! ' cho # <Pod :: Đặc điểm kỹ thuật cho MyApp (1.0)>
KrauseFx

22
Làm thế nào tôi có thể giải quyết vấn đề sau: Tôi muốn các cảnh báo được ẩn cho một số nhóm, nhưng không phải cho tất cả chúng.
KrauseFx

3
@krausefx Xin lỗi, không thấy bình luận của bạn. Vì lợi ích của hậu thế, giờ đây bạn có thể vô hiệu hóa các cảnh báo trên cơ sở từng nhóm, như được hiển thị trong tài liệu Podfile
hợp kim

2
@JohanKarlsson Hủy bỏ lệnh và chạy pod installđể tạo lại Pods.xcodeproj.
hợp kim

1
Lưu ý rằng điều này không loại trừ các cảnh báo (vấn đề) xuất hiện trong Analyzegiai đoạn. Tôi đã đưa ra một số gợi ý cho điều đó trong một câu trả lời khác.
Jedidja

28

Bạn có thể tìm kiếm "immunit_all_warnings" trong cài đặt xây dựng xcode của PodBundle trong không gian làm việc dự án của bạn, đặt giá trị thành "CÓ", nó sẽ ẩn tất cả các cảnh báo tệp Pod của bạn.

Nếu bạn làm điều đó vào không gian làm việc của bạn, nó cũng sẽ ẩn tất cả dự án của bạn.


Đây là một giải pháp đơn giản hơn, đặt điều này vào dự án nhóm và nó chỉ vô hiệu hóa các cảnh báo liên quan đến nhóm chứ không phải cảnh báo dự án của bạn. Không cần phải thực hiện lại cài đặt pod.
Andres Canella

28
Không được khuyến khích! Với pod installcài đặt tiếp theo, phần này được ghi đè, vì vậy tốt hơn hãy đặt nó trong Podfile!
electronix384128

4
Cá nhân tôi làm như vậy để mỗi bản cập nhật tôi nhớ xem nhanh tất cả các cảnh báo và đảm bảo rằng chúng không thể bỏ qua.
Andres Canella

Còn về sự phụ thuộc trong một podspec cho một pod dev cục bộ thì sao?
Ari Braginsky

Bạn cũng có thể đặt Swift Compiler - Warnings Policies> Suppress Warningsthành Yes... với inhibit_all_warningsTôi vẫn có 'characters' is deprecated: Please use String or Substring directly cảnh báo trong Pods. Cài đặt này đã loại bỏ cảnh báo này.
Tiois

6

Mặc dù câu trả lời khác này sẽ loại bỏ các cảnh báo trong giai đoạn xây dựng, nhưng nó dường như không khắc phục hoàn toàn Analyzegiai đoạn (điều này khiến cho việc xây dựng CI của chúng tôi vẫn có vấn đề).

Điều làm việc cho tôi (ngoài câu trả lời được chấp nhận) là:

  • Bấm vào Podsdự án từ Project Navigator
  • Chọn Pod-mục tiêu thực tế và nhấp vàoBuild Settings
  • Lọc với cụm từ compiler flags
  • Thêm một cái mới Other C Flagsvới giá trị -w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(hoặc bất kỳ máy phân tích nào bạn cần vô hiệu hóa) - câu trả lời này cung cấp danh sách đầy đủ các cờ để thử - vui lòng nâng cấp nó!

    Tuy nhiên, phiên bản clangtrong Xcode 6.3.1 dường như không bao gồm insecureAPIđể bạn có thể xóa nó khỏi danh sách đó. Danh sách đầy đủ "hiện tại" là-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

Lưu ý rằng cài đặt này trên PodsDự án hoặc PodsMục tiêu sẽ không hoạt động . Tôi không chắc tại sao, nhưng bạn phải đặt nó cho từng Pod-mục tiêu thực tế .

Bạn cũng có thể đặt cờ trình biên dịch ( -w -Xanalyzer -analyzer-disable-checker -Xanalyzer corev.v.) trên cơ sở mỗi tệp .

Tôi cũng đã thử một vài phương pháp khác (có thể hoặc không cần thiết ngoài các phương pháp trên). Chúng được thực hiện trên Podschính Dự án.


[1]

  • Lọc với cụm từ analyzer
  • Đảm bảo Analyze During 'Build'được đặt thành NO.
  • Thay đổi tất cả các cài đặt thành NO(bao gồm Improper Memory Management)

[2]

  • Lọc với cụm từ warnings
  • Thay đổi inhibit all warningsthànhYES

Vì một số lý do, thậm chí vô hiệu hóa Analyzebước trong lược đồ dường như không hoạt động.

Đi đến Product > Scheme > Manage Schemescửa sổ, nhấp vào từng Pod-*từ danh sách và nhấp vào Editnút. Bấm Buildvào danh sách bên trái, rồi bỏ chọn Analyze ở phía bên phải cho Podmục tiêu.

Tôi vẫn bối rối về lý do tại sao tôi không thể vô hiệu hóa hoàn toàn các Pods khỏi phân tích, mặc dù tôi hy vọng nó có thể phải thực hiện với "Tìm phụ thuộc ngầm" được kiểm tra trong cài đặt bản dựng của lược đồ. Tuy nhiên, nếu điều đó không được kiểm tra, có vẻ như điều gì đó khác sẽ cần xảy ra để ứng dụng liên kết với các nhóm.


1
Lưu ý: Thật không may, điều này không giúp ích gì với CI nếu bạn loại trừ Pods và .xcworkspace khỏi kho lưu trữ của bạn - sử dụng .gitignore của bạn.
RileyE

@RileyE thú vị - có lý do chính đáng để loại những người đó khỏi repo không? Nếu vậy, kỹ thuật khác trên trang này có hiệu quả với bạn không? (Tôi vẫn là người mới phát triển iOS nên khá tò mò muốn tìm hiểu thêm)
Jedidja

Có một sự phân chia lớn về việc có bao gồm nó hay không . Tôi không thích bao gồm nó vì tôi muốn đảm bảo podfile của mình luôn chính xác và tôi đã tìm thấy một số xung đột giữa các Podfile.lock và .xcworkspaces khác nhau của người dùng. Nó chỉ đơn giản là một ưu tiên cho người dùng với những ưu và nhược điểm gây tranh cãi mạnh mẽ.
RileyE

@RileyE cảm ơn thông tin! Vì vậy, nếu chúng tôi đã loại trừ Pods / .xcworkspace, không có cách giải quyết cho vấn đề?
Jedidja

Không may măn. Đó là lý do tại sao tôi đã đẩy các cờ bổ sung vào pod install.
RileyE

5

Bước: 1 Đặt tập lệnh bên dưới vào Podfile của bạn.

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

Bước 2. Làm pod install.


2
Tôi cũng đã phải thêm các mục sau cho Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.