Xcode ช่วยให้คุณ (ยกเลิก) ตรวจสอบการตั้งค่าสำหรับคำเตือนของคอมไพเลอร์เฉพาะที่สามารถเตือนคุณเกี่ยวกับรหัสที่ไม่ได้ใช้บางประเภท (เลือกโปรเจ็กต์ในรายการต้นทางและไฟล์> รับข้อมูลจากนั้นเลือกแท็บสร้าง) นี่คือบางส่วน (ซึ่งแสดงสำหรับ Clang และ GCC 4.2 สำหรับฉัน) ซึ่งอาจเป็นที่สนใจ:
- ฟังก์ชั่นที่ไม่ได้ใช้
- พารามิเตอร์ที่ไม่ได้ใช้
- ค่าที่ไม่ได้ใช้
ฉันไม่เห็นตัวเลือกใด ๆ ในการตรวจจับการนำเข้าที่ไม่ได้ใช้ แต่มันค่อนข้างง่ายกว่าเล็กน้อย - วิธีการที่ใช้เทคโนโลยีขั้นต่ำเพียงแค่แสดงความคิดเห็นในคำสั่งนำเข้าจนกว่าคุณจะได้รับข้อผิดพลาด / คำเตือนในการคอมไพล์
เมธอด Objective-C ที่ไม่ได้ใช้นั้นตรวจจับได้ยากกว่าฟังก์ชัน C ที่ไม่ได้ใช้มากเนื่องจากข้อความจะถูกส่งแบบไดนามิก คำเตือนหรือข้อผิดพลาดสามารถบอกคุณได้ว่าคุณอาจมีปัญหา แต่การขาดอย่างใดอย่างหนึ่งไม่ได้รับประกันว่าคุณจะไม่มีข้อผิดพลาดรันไทม์
แก้ไข:อีกวิธีหนึ่งที่ดีในการตรวจหาวิธีที่ไม่ได้ใช้ (อาจ) คือการตรวจสอบความครอบคลุมของรหัสจากการดำเนินการจริง โดยปกติจะทำควบคู่ไปกับการทดสอบหน่วยอัตโนมัติ แต่ไม่จำเป็นต้องทำ
บล็อกโพสต์นี้เป็นการแนะนำที่ดีเกี่ยวกับการทดสอบหน่วยและการครอบคลุมโค้ดโดยใช้ Xcode ส่วนบนgcov
(ซึ่งใช้งานได้กับโค้ดที่สร้างโดย GCC เท่านั้น) อธิบายถึงวิธีรับ Xcode เพื่อสร้างโค้ดที่เป็นเครื่องมือซึ่งสามารถบันทึกความถี่ในการเรียกใช้งาน หากคุณใช้เครื่องมือสร้างแอปของคุณเพื่อหมุนในเครื่องจำลองจากนั้นเรียกใช้ gcov บนแอปคุณจะเห็นว่าโค้ดใดถูกเรียกใช้โดยใช้เครื่องมือเช่นCoverStory (GUI ที่ค่อนข้างง่าย) หรือlcov
(สคริปต์ Perl เพื่อสร้างรายงาน HTML) .
ฉันใช้gcov
และlcov
สำหรับCHDataStructures.frameworkและสร้างรายงานความครอบคลุมโดยอัตโนมัติหลังจากการคอมมิต SVN แต่ละครั้ง โปรดจำไว้อีกครั้งว่าไม่ฉลาดที่จะถือว่าการดำเนินการครอบคลุมเป็นตัวชี้วัดที่ชัดเจนว่ารหัสใด "ตาย" แต่ก็สามารถช่วยระบุวิธีการที่คุณสามารถตรวจสอบเพิ่มเติมได้
สุดท้ายนี้เนื่องจากคุณกำลังพยายามลบรหัสที่ตายแล้วฉันคิดว่าคุณจะพบว่าคำถาม SO นี้น่าสนใจเช่นกัน:
id
หรือสร้างตัวเลือกเพื่อเรียกใช้ขณะรันไทม์ตัววิเคราะห์แบบคงไม่สามารถรับประกันได้ รหัสนั้นไม่ได้ถูกใช้อย่างแท้จริง หากรหัสที่ยังต้องการถูกลบออกนั่นคือจุดที่คุณจะได้รับข้อผิดพลาดรันไทม์ ฉันพลาดอะไรไปรึเปล่า?