Проблема с обнаружением лишних включений заключается в том, что это не может быть просто проверка зависимости типа. Избыточное включение - это файл, который ничего не представляет для компиляции , а не изменяет другой элемент, от которого зависят другие файлы. Существует много способов, которыми файл заголовка может изменить компиляцию, например, путем определения константы, переопределения и / или удаления использованного макроса, добавления пространства имен, которое изменяет поиск имени каким-либо образом вниз по строке. Чтобы обнаружить такие элементы, как пространство имен, вам нужно гораздо больше, чем препроцессор, фактически вам нужен почти полный компилятор.
Lint - это скорее средство проверки стиля, которое, безусловно, не будет обладать этой полной возможностью.
Я думаю, вы найдете единственный способ обнаружить лишнее включение - удалить, скомпилировать и запустить пакеты.