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?Appcode memiliki fitur pemeriksaan kode yang menemukan impor dan kode yang tidak digunakan.
sumber
Kami telah menggunakan beberapa kode Ruby buatan sendiri, sekarang diekstrak menjadi permata bernama fui: https://github.com/dblock/fui
sumber
Saya baru-baru ini menulis skrip untuk menemukan
#import
pernyataan yang tidak digunakan (atau duplikat) : https://gist.github.com/Orangenhain/7691314Skrip mengambil file ObjC .m dan mulai memberi komentar masing-masing
#import
baris secara bergantian dan melihat apakah proyek masih terkompilasi. Anda harus mengubah BUILD_DIR & BUILD_CMD.Jika Anda menggunakan
find
perintah untuk membiarkan skrip menjalankan beberapa file, pastikan untuk menggunakan BUILD_CMD yang benar-benar menggunakan semua file tersebut (atau Anda akan melihat file dengan banyak pernyataan impor yang tidak digunakan).Saya menulis ini tanpa mengetahui AppCode memiliki fitur serupa, namun ketika saya menguji AppCode itu tidak selengkap skrip ini (tetapi jauh lebih cepat [untuk keseluruhan proyek]).
sumber
Seperti yang dikatakan paddydub , AppCode melakukan ini dengan sangat baik. Saya mencoba, dan hanya butuh 10 menit:
Pergi ke
Code > Optimize Imports...
, atau^ + ⌥ + O
Berikut adalah video yang menjelaskan cara melakukan ini: Deteksi metode dan impor yang tidak digunakan di AppCode
sumber
Anda dapat menggunakan Xcode Analyzer untuk menemukan itu dan masalah lainnya.
http://help.apple.com/xcode/mac/8.0/#/devb7babe820
Anda juga dapat pergi ke proyek dan membangun target dan menambahkan preferensi peringatan perubahan di bawah pengaturan build. Lihat panduan ini:
http://oleb.net/blog/2013/04/compiler-warnings-for-objective-c-developers/
sumber
Baru-baru ini, saya mengubah proyek besar dari Karbon menjadi Kakao. Pada akhirnya, ada beberapa file yatim piatu yang tidak lagi digunakan. Saya menulis skrip untuk menemukan mereka yang pada dasarnya melakukan ini:
Pastikan sumber semuanya diperiksa ke subversi (yaitu bersih) Pastikan saat ini dibangun tanpa kesalahan (yaitu, xcodebuild mengembalikan status 0) Kemudian, untuk setiap file sumber dalam direktori, kosongkan (yaitu, hapus isinya, potong panjangnya) source dan file header, coba build, jika gagal, kembalikan file, jika tidak, biarkan kosong.
Setelah menjalankan ini, kembalikan dan kemudian hapus semua file yang dikosongkan, kompilasi dan kemudian hapus semua kesalahan #imports.
Saya juga harus menambahkan, Anda perlu menghindari file yang direferensikan dari file .xib atau .sdef, dan mungkin ada kasus penautan dinamis lainnya, tetapi masih dapat memberi Anda petunjuk yang baik tentang apa yang dapat dihapus.
Teknik yang sama dapat digunakan untuk melihat #import mana yang dapat dihapus - daripada memotong file, hapus setiap #import dalam file secara bergantian dan lihat apakah build gagal.
sumber