Saya sudah mencoba menggunakan Flexelint (versi unix PC-Lint) dan hasilnya agak beragam. Ini mungkin karena saya sedang mengerjakan basis kode yang sangat besar dan rumit. Saya merekomendasikan untuk memeriksa setiap file dengan hati-hati yang dilaporkan tidak digunakan.
Kekhawatiran utama adalah positif palsu. Beberapa menyertakan header yang sama dilaporkan sebagai header yang tidak dibutuhkan. Ini buruk karena Flexelint tidak memberi tahu Anda pada baris apa header tersebut disertakan atau di mana ia dimasukkan sebelumnya.
Salah satu cara alat otomatis dapat melakukan ini:
Di A.hpp:
class A {
// ...
};
Dalam B.hpp:
#include "A.hpp
class B {
public:
A foo;
};
Dalam C.cpp:
#include "C.hpp"
#include "B.hpp" // <-- Unneeded, but lint reports it as needed
#include "A.hpp" // <-- Needed, but lint reports it as unneeded
Jika Anda mengikuti secara membabi buta pesan dari Flexelint Anda akan menghapus dependensi #include Anda. Ada lebih banyak kasus patologis, tetapi pada dasarnya Anda perlu memeriksa sendiri header untuk hasil terbaik.
Saya sangat merekomendasikan artikel ini tentang Struktur Fisik dan C ++ dari blog Games dari dalam. Mereka merekomendasikan pendekatan komprehensif untuk membersihkan #include mess:
Pedoman
Berikut adalah seperangkat pedoman yang disaring dari buku Lakos yang meminimalkan jumlah ketergantungan fisik antara file. Saya telah menggunakannya selama bertahun-tahun dan saya selalu sangat senang dengan hasilnya.
- Setiap file cpp menyertakan file header sendiri terlebih dahulu. [menggunting]
- File header harus menyertakan semua file header yang diperlukan untuk menguraikannya. [menggunting]
- File header harus memiliki jumlah minimum file header yang diperlukan untuk menguraikannya. [menggunting]