Xcode memungkinkan Anda untuk (tidak) memeriksa pengaturan untuk peringatan compiler tertentu yang dapat memperingatkan Anda tentang beberapa jenis kode yang tidak digunakan. (Pilih proyek di daftar sumber dan File> Dapatkan Info, lalu pilih tab Bangun.) Berikut beberapa (yang muncul untuk Clang dan GCC 4.2 untuk saya) yang mungkin menarik:
- Fungsi yang Tidak Digunakan
- Parameter yang Tidak Digunakan
- Nilai yang Tidak Digunakan
Saya tidak melihat opsi apa pun untuk mendeteksi impor yang tidak digunakan, tetapi itu sedikit lebih sederhana - pendekatan berteknologi rendah hanya dengan mengomentari pernyataan impor sampai Anda mendapatkan kesalahan / peringatan kompilasi.
Metode Objective-C yang tidak digunakan jauh lebih sulit untuk dideteksi daripada fungsi C yang tidak digunakan karena pesan dikirim secara dinamis. Peringatan atau kesalahan dapat memberi tahu Anda bahwa Anda memiliki potensi masalah, tetapi kurangnya masalah tidak menjamin Anda tidak akan mengalami kesalahan waktu proses.
Edit: Cara lain yang baik untuk mendeteksi (berpotensi) metode yang tidak digunakan adalah dengan memeriksa cakupan kode dari eksekusi sebenarnya. Ini biasanya dilakukan bersama-sama dengan pengujian unit otomatis, tetapi tidak harus begitu.
Posting blog ini adalah pengantar yang layak untuk pengujian unit dan cakupan kode menggunakan Xcode. Bagian gcov
(yang hanya berfungsi dengan kode yang dihasilkan oleh GCC) menjelaskan cara mendapatkan Xcode untuk membuat kode berinstrumen yang dapat mencatat seberapa sering kode tersebut dijalankan. Jika Anda mengambil build terinstrumentasi dari aplikasi Anda untuk berputar di simulator, lalu menjalankan gcov di dalamnya, Anda dapat melihat kode apa yang dijalankan dengan menggunakan alat seperti CoverStory (GUI yang cukup sederhana) atau lcov
(skrip Perl untuk membuat laporan HTML) .
Saya menggunakan gcov
dan lcov
untuk CHDataStructures.framework dan membuat laporan cakupan secara otomatis setelah setiap SVN komit. Sekali lagi, ingatlah bahwa tidak bijaksana memperlakukan cakupan yang dieksekusi sebagai ukuran pasti dari kode apa yang "mati", tetapi tentu saja hal itu dapat membantu mengidentifikasi metode yang dapat Anda selidiki lebih lanjut.
Terakhir, karena Anda mencoba menghapus kode mati, saya pikir Anda akan menemukan pertanyaan SO ini menarik juga:
id
, atau membuat pemilih untuk dipanggil saat runtime, penganalisis statis tidak dapat menjamin bahwa kode tersebut benar-benar tidak digunakan. Jika kode yang masih diperlukan dihapus, di situlah Anda akan mendapatkan error runtime. Apakah saya melewatkan sesuatu?