Поиск неиспользуемых файлов в проекте - PullRequest
4 голосов
/ 09 сентября 2008

Мы переносим наш репозиторий работ, поэтому я хочу выполнить отбор всех файлов, на которые нет ссылок, которые существуют в дереве исходных текстов, прежде чем переместить его в красивый свежий (пустой) репозиторий.

Пока что я прошел вручную и нашел все не связанные с ними файлы, о которых я знаю, но я хочу выяснить, поймал ли я их все. Одним из способов было бы вручную переместить файл проекта за файлом в новую папку и посмотреть, что прилипает при компиляции. Это займет всю неделю, поэтому мне нужен автоматизированный инструмент.

Что люди предлагают?

Разъяснения:
1) Это C ++.
2) Файлы смешаны. Я ищу файлы, которые были заменены другими, но оставили гнить в хранилище - например, файл_iter.h не упоминается ни в каком другом файле программы, но остается в хранилище на тот случай, если кто-то захочет скомпилировать версию из 1996! Теперь мы переходим к новому хранилищу, и мы можем безопасно удалить все файлы, которые больше не используются.
3) Lint находит только неиспользуемые файлы, а не неиспользуемые файлы (передо мной руководство по 7.5).

Ответы [ 5 ]

2 голосов
/ 09 сентября 2008

Вы отметили это сообщение как c ++ , поэтому я предполагаю, что это язык, о котором идет речь. Если это единственное, что находится в хранилище, тогда не должно быть слишком сложно выполнить поиск всех файлов в хранилище для каждого имени файла, чтобы дать вам хорошую отправную точку. Если хранилище содержит другие файлы (метаданные, файлы поддержки, ресурсы и т. Д.), Вам, вероятно, потребуется сделать это вручную.

1 голос
/ 09 февраля 2009

Вы можете сделать это косвенно с помощью Lint, выполнив «анализ всего проекта» (в котором все файлы анализируются вместе, а не по отдельности).

Сконфигурируйте его так, чтобы он игнорировал все, кроме предупреждений о переменных / перечислениях / функциях и т. Д., На которые нет ссылок, и он должен дать вам разумный показатель того, где находится мертвая древесина, без каких-либо проблем, скрываемых другими пользователями в кодовой базе.

1 голос
/ 10 сентября 2008

Я не могу предложить существующий инструмент для него, но я ожидаю, что вы можете получить много этой информации от ваших инструментов сборки (возможно, с некоторыми усилиями). Как правило, вы можете, по крайней мере, позволить инструменту сборки печатать команды, которые он будет запускать, фактически не выполняя их. (Например, -n опция make и bjam делает это.) Из нее вы сможете извлечь хотя бы использованные исходные файлы.

С -MM из g++ вы можете получить все несистемные заголовочные файлы для указанных исходных файлов. Вывод выполняется в виде make правила, но с некоторой фильтрацией это не должно быть проблемой.

Я не знаю, помогает ли это; это именно то, что я бы попробовал в вашей ситуации.

0 голосов
/ 09 сентября 2008

Вы смотрели на Source-Navigator ? Его можно использовать в качестве IDE, но я обнаружил, что он очень хорош в анализе структуры исходного кода. Например, он может узнать, где и используется ли определенный метод в вашем исходном коде.

Я не знаю, может ли это быть написано в сценарии, но это может быть хорошей отправной точкой для вас.

0 голосов
/ 09 сентября 2008

Статический инструмент для анализа исходного кода, такой как lint, может выполнить эту работу. Они скажут вам, если часть кода никогда не будет вызвана.

...