2009-07-24 8 views
3

mögliche Dubletten:
C/C++: Detecting superfluous #includes?
How should I detect unnecessary #include files in a large C++ project?Automatisches Entfernen nicht benötigten # include-Anweisungen

Hallo,

Ich habe nach zahlreichen Diskussionen über gewesen, wie die Erstellungszeit für C zu reduzieren/C++ - Projekte. Normalerweise besteht eine gute Optimierung darin, # include-Anweisungen mithilfe von Vorwärtsdeklarationen zu entfernen. Jetzt frage ich mich:

Gibt es vielleicht ein Werkzeug, das die # include Abhängigkeitsbaum zwischen C/C++ Header Dateien berechnen kann (ich weiß, mkdep auf Linux kann dies tun) und startet dann eine "Header-Datei entfernen/kompilieren ' Zyklus? Es wäre großartig, wenn das Tool versuchen könnte, Knoten aus der Abhängigkeitsstruktur zu entfernen (z. B. #include-Statements aus Dateien entfernen) und dann das Projekt neu zu erstellen, um zu sehen, ob es noch funktioniert.

Es sollte nicht sehr clever sein (wie in, Refactoring den Code, um Header-Dateien unnötig mit Zeigern anstelle von Werten oder dergleichen zu machen), aber ich glaube, dass viele Projekte, die ich arbeitete, hatte unnoeed #include-Anweisungen. Dies passiert normalerweise, indem Code umgestaltet wird und verschoben wird, aber dann vergessen wird, #include herauszunehmen.

Weiß jemand, ob ein Werkzeug wie dieses existiert?

+2

mögliche Duplikate: http://stackoverflow.com/questions/614794/cc-detecting-superfluous-includes und http://stackoverflow.com/questions/74326/how-should-i-detect-uncesses-in-in-clude- files-in-a-large-c-projekt – dfa

+0

Beachten Sie, dass das Problem komplizierter wird, wenn Sie für mehrere Konfigurationen (Plattformen oder Build-Optionen) erstellen müssen, da Sie andere Builds nicht unterbrechen möchten. Eine andere Sache ist, dass Ihr Ziel, Abhängigkeiten automatisch zu minimieren, ein anderes Ziel beeinträchtigen kann: Sie können jede Include-Datei unabhängig halten. – AProgrammer

+0

bauen Box (en) x86_64 mit 8 Gb + RAM, schnelle Multicore-CPUs mit größten L1/L2-Caches, die Sie bekommen können, wäre eine Brute-Force, aber schnell und billig Ansatz für die Build-Zeit-Optimierung Problem. Kann das aus eigener Erfahrung mit einer umfangreichen Codebase sagen :-) Außerdem ist es nur der erste Build, der viel Zeit in Anspruch nimmt - wenn Sie inkrementelle Änderungen vornehmen, sollten Sie nur sehr wenige Module neu kompilieren, daher lohnt es sich, das Problem zu betrachten auch aus einem anderen Blickwinkel. –

Antwort

1

Es gab viele Fragen, die hier ähnlich sind. Bis jetzt hat niemand ein wirklich gutes Werkzeug gefunden, um die Abhängigkeitsgraphen und Hilight Multiple Includes usw. aufzulisten (Favoriten scheinen doxygen zu sein), und viel weniger bearbeiten Sie die Dateien selbst. Also würde ich vermuten, dass der Anser "Nein" sein wird - ich würde mich jedoch darüber freuen, falsch zu liegen!

Verwandte Themen