2008-09-09 7 views
3

Wir migrieren unser Arbeitsrepository, sodass ich alle nicht referenzierten Dateien, die in der Quellbaumstruktur vorhanden sind, aussortieren muss, bevor ich sie in das schöne frische (leere) Repository verschiebe.Suchen nach nicht verwendeten Dateien in einem Projekt

Bisher bin ich mit der Hand durchgegangen und habe alle nicht referenzierten Dateien gefunden, die ich kenne, aber ich möchte herausfinden, ob ich sie alle erwischt habe. Eine Möglichkeit wäre, die Projektdatei manuell nach Datei in einen neuen Ordner zu verschieben und zu sehen, was beim Kompilieren hängen bleibt. Das wird die ganze Woche dauern, also brauche ich ein automatisiertes Werkzeug.

Was schlagen die Leute vor?

Erläuterungen:
1) Es ist C++.
2) Die Dateien sind gemischt. Ich suche nach Dateien, die von anderen ersetzt wurden, aber im Repository verrotten. File_iter.h wird von keiner anderen Datei im Programm referenziert, sondern bleibt im Repository, nur für den Fall, dass jemand eine Version kompilieren möchte 1996! Jetzt bewegen wir uns zu einem neuen Repository, in dem wir alle Dateien, die nicht mehr verwendet werden, sicher löschen können.
3) Lint findet nur unbenutzte Includes - nicht unbenutzte Dateien (ich habe das 7.5 Handbuch vor mir).

+0

Können Sie mehr über Ihre Build-Umgebung beschreiben?Haben Sie beispielsweise UNIX-Befehlszeilentools zur Verfügung, und die Erstellung erfolgt mit Make oder ähnlichem. Ich könnte eine skriptbasierte Lösung beschreiben, um dies in diesem Fall zu tun ... –

Antwort

2

Sie haben diesen Beitrag mit C++ markiert, also nehme ich an, dass das die Sprache in Frage ist. Wenn das das einzige ist, was im Repository ist, sollte es nicht zu schwer sein, alle Dateien im Repository nach jedem Dateinamen zu durchsuchen, um Ihnen einen guten Startpunkt zu geben. Wenn das Repository andere Dateien (Metadaten, Supportdateien, Ressourcen usw.) enthält, müssen Sie dies wahrscheinlich manuell tun.

0

Ein statisches Quellcode-Analyse-Tool wie Lint könnte die Aufgabe erledigen. Sie werden Ihnen sagen, ob ein Code nie aufgerufen wird.

0

Haben Sie sich Source-Navigator angesehen? Es kann als eine IDE verwendet werden, aber ich fand heraus, dass es sehr gut darin ist, die Quellcodestruktur zu analysieren. Zum Beispiel kann es herausfinden, wo und ob eine bestimmte Methode in Ihrem Quellcode verwendet wird.

Ich weiß nicht, ob es skriptfähig ist, aber es könnte ein guter Ausgangspunkt für Sie sein.

1

Ich kann kein existierendes Werkzeug dafür anbieten, aber ich würde erwarten, dass Sie viele dieser Informationen von Ihnen bekommen können, um Werkzeuge zu erstellen (mit etwas Anstrengung, wahrscheinlich). In der Regel können Sie dem Build-Tool zumindest die Befehle geben, die es ausführen würde, ohne sie auszuführen. (Z. B. die -n Option von make und bjam tut dies.) Davon sollten Sie in der Lage sein, mindestens die verwendeten Quelldateien zu extrahieren.

Mit der -MM von g++ können Sie alle Nicht-System-Header-Dateien für die angegebenen Quelldateien erhalten. Die Ausgabe ist in Form einer make Regel, aber mit einigen Filtern sollte dies kein Problem sein.

Ich weiß nicht, ob das hilft; es ist genau das, was ich in deiner Situation versuchen würde.

1

Sie können dies indirekt mit Lint tun, indem Sie eine "Ganzprojektanalyse" ausführen (in der alle Dateien zusammen und nicht einzeln analysiert werden).

Konfigurieren Sie es so, dass alle Warnungen außer Variablen-/Enum-/Funktions-Warnungen ignoriert werden. Es sollte Ihnen einen vernünftigen Hinweis geben, wo der Totholz liegt, ohne dass diese von anderen in der Codebasis verdeckt werden.

+0

Ich bin gerade im Urlaub und habe nicht das Handbuch zur Hand, aber ich kann sehen, wie das mir die unbenutzten Dateien im Quellcode-Ordner zeigt . Ich würde mich freuen, wenn Sie mir einen Weg zeigen, dies zu tun ... –

+0

Hallo Graham, Der Trick besteht darin, eine .lnt-Datei zu generieren, die alle Dateien in der Lösung auflistet und alles außer der globalen Nachbearbeitung abstellt . Wenn Sie mich privilegieren, wenn Sie zurückkommen (anna AT riverblade. Co. Uk) Ich werde glücklich sein, Sie durch die Einrichtung zu führen und die Ergebnisse zu interpretieren. –