!!ZRZECZENIE SIĘ!! Pracuję na komercyjnym narzędziu do analizy statycznej (nie na PC Lint). !!ZRZECZENIE SIĘ!!
Istnieje kilka problemów związanych z prostym podejściem bez analizy:
1) Zestawy przeciążeniowe:
Możliwe, że przeciążona funkcja ma deklaracje pochodzące z różnych plików. Może się zdarzyć, że usunięcie jednego pliku nagłówkowego spowoduje wybranie innego przeciążenia zamiast błędu kompilacji! Rezultatem będzie cicha zmiana semantyki, która może być później bardzo trudna do wyśledzenia.
2) Specjalizacje szablonów:
Podobnie jak w przypadku przeciążenia, jeśli masz częściowe lub jawne specjalizacje dla szablonu, chcesz, aby wszystkie były widoczne, gdy szablon jest używany. Może się zdarzyć, że specjalizacje dla szablonu podstawowego znajdują się w różnych plikach nagłówkowych. Usunięcie nagłówka ze specjalizacją nie spowoduje błędu kompilacji, ale może spowodować niezdefiniowane zachowanie, jeśli ta specjalizacja została wybrana. (Zobacz: Widoczność specjalizacji szablonów funkcji C ++ )
Jak podkreśla „msalters”, przeprowadzenie pełnej analizy kodu pozwala również na analizę wykorzystania klas. Sprawdzając, w jaki sposób klasa jest używana przez określoną ścieżkę plików, możliwe jest, że definicja klasy (a tym samym wszystkie jej zależności) może zostać całkowicie usunięta lub przynajmniej przeniesiona na poziom bliżej głównego źródła w dołączaniu drzewo.