Поиск неиспользуемых файлов в проекте

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

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

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

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

Не могли бы вы подробнее рассказать о своей среде сборки. Например, у вас есть инструменты типа командной строки UNIX и сборка выполняется с помощью Make или чего-то подобного. Я мог бы описать решение на основе сценария, чтобы сделать это в этом случае ...

Tall Jeff 09.09.2008 14:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
1
1 373
5

Ответы 5

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

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

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

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

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

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

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

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

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

Я сейчас в отпуске, и у меня нет под рукой руководства по линтам, но я вижу, как он покажет мне неиспользуемые файлы в папке с исходным кодом. Буду рад, если вы покажете мне, как это сделать ...

graham.reeds 10.02.2009 10:48

Привет, Грэм! Уловка состоит в том, чтобы сгенерировать файл .lnt, в котором перечислены все файлы в решении, и отключить все, кроме глобального обертывания. Если вы напишете мне личное письмо, когда вернетесь (anna AT riverblade. Co. Uk), я с радостью проведу вас через настройку и интерпретацию результатов.

Anna-Jayne Metcalfe 05.03.2009 02:13

Другие вопросы по теме