ละเว้นคำเตือน Xcode เมื่อใช้ Cocoapods


417

ฉันใช้ห้องสมุดบุคคลที่สามค่อนข้างมากซึ่งมีคำเตือนมากมายหลังจากอัปเดต Xcode ล่าสุด (เช่นพ็อด SDK ของ Facebook) ตอนนี้คำเตือนเหล่านี้ทั้งหมดจะแสดงใน 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.inhibit_all_warnings 'Facebook-iOS-SDK' s.dependency! และฉันได้รับข้อผิดพลาดดังต่อไปนี้: วิธีที่ไม่ได้กำหนด ` สำหรับ # <Pod :: ข้อกำหนดสำหรับ MyApp (1.0)>
KrauseFx

22
ฉันจะแก้ไขปัญหาต่อไปนี้ได้อย่างไร: ฉันต้องการให้ซ่อนคำเตือนสำหรับพ็อดบางตัว แต่ไม่ใช่สำหรับคำเตือนทั้งหมด
KrauseFx

3
@krausefx ขออภัยไม่เห็นความคิดเห็นของคุณ เพื่อเห็นแก่ผู้ป่วยตอนนี้คุณสามารถปิดการเตือนได้แบบต่อพ็อดตามที่แสดงในเอกสารPodfile
อัลลอย

2
@JohanKarlsson ลบคำสั่งและเรียกใช้pod installเพื่อสร้าง Pods.xcodeproj ใหม่
อัลลอย

1
โปรดทราบว่านี่ไม่ได้ขัดขวางการเตือน (ปัญหา) ไม่ให้ปรากฏในระหว่างAnalyzeเฟส ฉันได้เสนอคำแนะนำสำหรับคำตอบนั้นในคำตอบอื่น
Jedidja

28

คุณสามารถค้นหา "inhibit_all_warnings" ในการตั้งค่า xcode build ของ PodBundle ในพื้นที่ทำงานโครงการของคุณตั้งค่าเป็น "YES" ซึ่งจะซ่อนคำเตือนไฟล์ Pod ทั้งหมดของคุณ

หากคุณทำในพื้นที่ทำงานของคุณมันจะซ่อนโครงการทั้งหมดของคุณด้วย


นี่เป็นวิธีที่ง่ายกว่าตั้งค่านี้ในโครงการพ็อดและจะปิดใช้งานคำเตือนที่เกี่ยวข้องกับพ็อดเท่านั้นไม่ใช่คำเตือนโปรเจ็กต์ของคุณ ไม่จำเป็นต้องทำการติดตั้งพ็อดอีกครั้ง
Andres Canella

28
ไม่แนะนำ! ด้วยการpod installตั้งค่าต่อไปนี้จะถูกแทนที่ดังนั้นจึงควรตั้งค่าไว้ใน Podfile!
electronix384128

4
โดยส่วนตัวฉันทำเช่นนี้เพื่อให้ทุกการอัปเดตฉันจำได้ว่าต้องดูอย่างรวดเร็วว่าคำเตือนทั้งหมดและตรวจสอบให้แน่ใจว่าพวกเขาถูกทอดทิ้ง
Andres Canella

สิ่งที่เกี่ยวกับการพึ่งพาใน podspec สำหรับฝัก dev ท้องถิ่น?
Ari Braginsky

คุณอาจตั้งค่าSwift Compiler - Warnings Policies> Suppress Warningsเป็นYes... โดยที่inhibit_all_warningsฉันยังมี'characters' is deprecated: Please use String or Substring directly คำเตือนในพ็อด การตั้งค่านี้ลบคำเตือนนี้
Tiois

6

แม้ว่าคำตอบอื่น ๆ นี้จะลบคำเตือนในระหว่างขั้นตอนการสร้าง แต่ดูเหมือนว่าจะไม่สามารถแก้ไขAnalyzeขั้นตอนได้อย่างสมบูรณ์(ซึ่งทำให้ CI ของเรายังคงมีปัญหาอยู่)

สิ่งที่ได้ผลสำหรับฉัน (นอกเหนือจากคำตอบที่ยอมรับ) คือ:

  • คลิกที่Podsโครงการจาก Project Navigator
  • เลือกPod-เป้าหมายจริงและคลิกที่Build Settings
  • กรองด้วยวลี compiler flags
  • เพิ่มใหม่Other C Flagsด้วยค่า-w -Xanalyzer -analyzer-disable-checker -Xanalyzer core(หรือตัววิเคราะห์ใดก็ตามที่คุณต้องปิดการใช้งาน) - คำตอบนี้ให้รายการเต็มรูปแบบของธงที่จะลอง - โปรดโหวตขึ้น!

    อย่างไรก็ตามเวอร์ชันของclangใน Xcode 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เป้าหมาย

ฉันยังคงสับสนว่าทำไมฉันจึงไม่สามารถปิดการใช้งาน Pod ได้อย่างสมบูรณ์แม้ว่าฉันคาดว่ามันอาจเกี่ยวข้องกับการทำเครื่องหมาย "ค้นหาการอ้างอิงโดยนัย" ในการตั้งค่าการสร้างของโครงการ แม้ว่าจะไม่ได้ตรวจสอบ แต่ดูเหมือนว่าจะต้องมีสิ่งอื่นเกิดขึ้นเพื่อให้แอปเชื่อมโยงไปยังพ็อด


1
หมายเหตุ:น่าเสียดายนี่ไม่ได้ผลกับ CI หากคุณไม่รวม Pods และ. xcworkspace จากที่เก็บของคุณ - ใช้. gitignore ของคุณ
RileyE

@RileyE ที่น่าสนใจ - มีเหตุผลที่ดีที่จะแยกพวกเขาออกจาก repo หรือไม่? ถ้าเป็นเช่นนั้นเทคนิคอื่น ๆ ในหน้านี้ใช้งานได้สำหรับคุณหรือไม่? (ฉันยังเป็นมือใหม่ที่เกี่ยวข้องกับการพัฒนา iOS จึงอยากรู้อยากเห็นมากขึ้น)
Jedidja

มีการแบ่งขนาดใหญ่บนว่าจะรวมหรือไม่เป็น ฉันไม่ชอบรวมไว้เพราะฉันต้องการให้แน่ใจว่า podfile ของฉันถูกต้องเสมอและฉันพบข้อขัดแย้งระหว่างผู้ใช้ Podfile.lock กับ. xcworkspaces ที่แตกต่างกัน เป็นเพียงการตั้งค่าสำหรับผู้ใช้ที่มีข้อดีข้อเสียอย่างมาก
RileyE

@RileyE ขอบคุณสำหรับข้อมูล! ดังนั้นหากเราไม่รวม Pods / .xcworkspace ไม่มีวิธีแก้ไขปัญหาสำหรับปัญหา
Jedidja

แต่น่าเสียดายที่ไม่ได้. pod installซึ่งเป็นเหตุผลที่ฉันได้รับการผลักดันธงเพิ่มเติมเกี่ยวกับ
RileyE

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 installDo


2
ฉันต้องเพิ่มสิ่งต่อไปนี้สำหรับ Swift Pods:config.build_settings['SWIFT_SUPPRESS_WARNINGS'] = "YES"
pstoppani
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.