Alat cakupan kode, seperti Emma, Cobertura, dan Clover, akan menginstrumentasi kode Anda dan mencatat bagian mana yang dipanggil dengan menjalankan serangkaian tes. Ini sangat berguna, dan harus menjadi bagian integral dari proses pengembangan Anda. Ini akan membantu Anda mengidentifikasi seberapa baik test suite Anda mencakup kode Anda.
Namun, ini tidak sama dengan mengidentifikasi kode mati nyata. Ini hanya mengidentifikasi kode yang dicakup (atau tidak dicakup) oleh tes. Ini dapat memberi Anda positif palsu (jika tes Anda tidak mencakup semua skenario) serta negatif palsu (jika tes Anda mengakses kode yang sebenarnya tidak pernah digunakan dalam skenario dunia nyata).
Saya membayangkan cara terbaik untuk benar-benar mengidentifikasi kode mati adalah dengan instrumen kode Anda dengan alat cakupan di lingkungan live running dan untuk menganalisis cakupan kode selama periode waktu yang panjang.
Jika Anda menjalankan dalam lingkungan redundan seimbang beban (dan jika tidak, mengapa tidak?) Maka saya kira masuk akal untuk hanya instrumen satu contoh aplikasi Anda dan untuk mengkonfigurasi penyeimbang beban Anda sedemikian rupa sehingga secara acak, tetapi kecil, bagian dari pengguna Anda berjalan pada instance yang diinstrumentasi. Jika Anda melakukan ini selama periode waktu yang lama (untuk memastikan bahwa Anda telah membahas semua skenario penggunaan dunia nyata - variasi musiman seperti itu), Anda harus dapat melihat dengan tepat area kode mana yang diakses di bawah penggunaan dunia nyata dan bagian mana benar-benar tidak pernah diakses dan karenanya kode mati.
Saya belum pernah melihat ini dilakukan secara pribadi, dan tidak tahu bagaimana alat-alat tersebut dapat digunakan untuk instrumen dan menganalisis kode yang tidak dipanggil melalui test suite - tetapi saya yakin mereka bisa melakukannya.