!!PENOLAKAN!! Saya bekerja pada alat analisis statis komersial (bukan PC Lint). !!PENOLAKAN!!
Ada beberapa masalah dengan pendekatan non parsing sederhana:
1) Set Kelebihan Beban:
Ada kemungkinan bahwa fungsi yang kelebihan beban memiliki deklarasi yang berasal dari file berbeda. Mungkin menghapus satu file header menghasilkan kelebihan muatan yang berbeda yang dipilih daripada kesalahan kompilasi! Hasilnya adalah perubahan diam-diam dalam semantik yang mungkin sangat sulit dilacak setelahnya.
2) Spesialisasi template:
Mirip dengan contoh overload, jika Anda memiliki spesialisasi parsial atau eksplisit untuk template, Anda ingin semuanya terlihat saat template digunakan. Mungkin spesialisasi untuk template utama ada di file header yang berbeda. Menghapus header dengan spesialisasi tidak akan menyebabkan kesalahan kompilasi, tetapi dapat mengakibatkan perilaku tidak terdefinisi jika spesialisasi tersebut telah dipilih. (Lihat: Visibilitas spesialisasi template dari fungsi C ++ )
Seperti yang ditunjukkan oleh 'msalters', melakukan analisis lengkap kode juga memungkinkan analisis penggunaan kelas. Dengan memeriksa bagaimana sebuah kelas digunakan melalui jalur file tertentu, dimungkinkan bahwa definisi kelas (dan oleh karena itu semua dependneciesnya) dapat dihapus seluruhnya atau setidaknya dipindahkan ke level yang lebih dekat ke sumber utama di include pohon.