Flexelint'i (PC-Lint'in unix sürümü) kullanmayı denedim ve biraz karışık sonuçlar aldım. Bu muhtemelen çok büyük ve düğümlü bir kod tabanı üzerinde çalışıyorum çünkü. Kullanılmadığı bildirilen her dosyayı dikkatlice incelemenizi öneririz.
Ana endişe yanlış pozitiftir. Aynı üstbilginin birden fazla eklenmesi gereksiz bir üstbilgi olarak bildirilir. Flexelint, başlığın hangi satıra dahil edildiğini veya daha önce nereye dahil edildiğini size söylemediğinden bu durum kötüdür.
Otomatik araçların bunu yanlış yapmasının yollarından biri:
A.hpp'de:
class A {
// ...
};
B.hpp'de:
#include "A.hpp
class B {
public:
A foo;
};
C.cpp'de:
#include "C.hpp"
#include "B.hpp" // <-- Unneeded, but lint reports it as needed
#include "A.hpp" // <-- Needed, but lint reports it as unneeded
Flexelint'in mesajlarını körü körüne takip ederseniz #include bağımlılıklarınızı boğacaksınız. Daha fazla patolojik vaka var, ancak temel olarak en iyi sonuçlar için başlıkları kendiniz kontrol etmeniz gerekecek.
İçeriden Blog Oyunları'ndan Fiziksel Yapı ve C ++ ile ilgili bu makaleyi tavsiye ederim . #İnclude karmaşasını temizlemek için kapsamlı bir yaklaşım öneriyorlar:
Kuralları
İşte Lakos'un kitabından, dosyalar arasındaki fiziksel bağımlılıkların sayısını en aza indiren, damıtılmış bir kılavuz seti. Onları yıllardır kullanıyorum ve sonuçlardan hep çok memnun kaldım.
- Her cpp dosyası önce kendi başlık dosyasını içerir. [Kesik]
- Başlık dosyası, ayrıştırmak için gerekli tüm başlık dosyalarını içermelidir. [Kesik]
- Bir üstbilgi dosyası, ayrıştırmak için gereken en az sayıda üstbilgi dosyasına sahip olmalıdır. [Kesik]