Я использовал Включите то, что вы используете раньше с довольно хорошими результатами. Он использует Clang для анализа кода C ++ и предлагает пересылать объявления для добавления и заголовочные файлы для удаления.
Один недостаток состоит в том, что он делает предположения о компоновке вашего кода - в основном это стандарты кодирования Google. Поэтому он будет смотреть только на SomeFile.h
, если у вас есть файл с именем SomeClass.cpp
. Также предлагается использовать полные пути из корня вашего проекта (поэтому #include "src/SomeClass.h"
вместо #include "SomeClass.h"
). В конце концов я все-таки изменил свой код на это соглашение, так как это позволяет избежать двусмысленности, но на случай, если вы попробуете его, ему нужна помощь.
Обычно вы можете просто установить CC=include-what-you-use
и пересобрать, чтобы получить результаты - он использует все механизмы лязга для анализа -I
включающих аргументов. Есть программа на python, которая использует результат для автоматического обновления строк #include.
EDIT:
Еще один инструмент, который не так сложен, но проще в настройке и может предложить #include
s для удаления: deheader . Он работает путем копирования вашего файла C ++ во временную папку, удаления #include
и перекомпиляции. Если перекомпиляция работает, то этот заголовочный файл безопасно удалить. Чего он не сделает, так это предложит предварительные объявления или что-нибудь необычное, но это может сократить ненужные строки включения в ваших файлах реализации.