Ответ 1
Другим, но довольно громоздким способом является создание файла карты, он содержит список всех единиц, используемых в программе.
см. также этот ответ: Как найти все устройства в приложении Delphi?
Достаточно легко найти все ваши внешние зависимости. Просто запустите программу и откройте окно информации о модулях. Но как я могу найти все свои внутренние зависимости? Я знаю, что программа хранит список всех единиц, потому что я прорисовал путь через код инициализации время или два. Но есть ли простой способ получить доступ к этому списку из отладчика?
Другим, но довольно громоздким способом является создание файла карты, он содержит список всех единиц, используемых в программе.
см. также этот ответ: Как найти все устройства в приложении Delphi?
Отладчик Delphi может показать вам, какие единицы были скомпилированы в модуль (exe, dll или пакет). Это можно увидеть в представлении "Модули" (View | Debug Windows | Modules). Нажмите на модуль в верхней левой панели, а нижняя левая панель отобразит все единицы компиляции, которые были встроены в этот модуль. Если конкретный блок компиляции состоял из нескольких исходных файлов (например,.pas и .inc файла), это также будет показано (при развертывании блока comp).
В качестве альтернативы вы можете использовать компилятор Delphi для отображения списка используемых .dcus путем передачи --depends при компиляции проекта. Он выведет файл .d со списком .dcus(и .dcps), которые были необходимы.
Я использую GExperts Зависимости проектов.
С помощью "Используется..." вы можете видеть единицы, включенные, но не используемые кем-либо.
Но вы не можете видеть единицу, включенную в предложения, которые могут быть удалены, если у них нет кода, который действительно вызван.
Вот помощь:
Зависимости проекта
Эксперт зависимости от проекта позволяет узнать, какие единицы использует конкретный блок, и, в свою очередь, какие единицы используют конкретный блок. Когда этот эксперт активирован, он анализирует весь текущий исходный код проекта для предложений использования и создает список зависимостей. Чтобы просмотреть информацию о зависимости для конкретного устройства, щелкните по нему на левой панели. На правой панели будет содержаться информация о зависимости. Косвенные зависимости - это единицы, которые используются используемыми единицами определенной единицы.
Вы можете обновить информацию о зависимостях в любое время, нажав кнопку обновления на панели инструментов, и вы можете отсортировать список файлов, нажав на заголовки столбцов.
alt text http://www.gexperts.org/tour/project%20dependencies.png
OTOH, вы также можете использовать бесплатный Peganza ICARUS в качестве более подробного инструмента для создания отчетов, но менее интерактивного...
Вы посмотрели Pascal Analyzer или бесплатную ограниченную версию Icarus, из Peganza Software? Они создадут "использует отчеты", рассказывая вам, какой модуль использует то, что другие, чтобы он дал вам информацию, которую вы после.
Марк
GExperts имеет инструмент зависимостей проектов. Я использовал его раньше, пытаясь отследить используемые единицы. Вы не можете искать в нем, но вы можете экспортировать список в файл CSV и искать там. В этом также перечисляется только то, что содержится в разделе "Использование". Если у вас есть модуль, который не используется, он все равно будет отображаться.
Я знаю, по крайней мере, два способа попытаться получить представление обо всех единицах, используемых в вашем проекте.
Самый простой способ - скомпилировать программу и проверить, какой .dcu
был создан компилятором. Обязательно настройте компилятор для создания .dcu
в отдельном каталоге, например c:\dcu
. Я создал простую утилиту, которая ищет .pas
для каждого файла .dcu
в каталогах, которые находятся в пути поиска компилятора (который можно прочитать из файла .cfg
, .dof
или .bdsproject
).
Вы можете использовать файл MAP в сочетании с MapFileStats, это не только даст вам все ваши зависимости, но и количество кода (и ресурсы), которые они вносят в окончательный исполняемый файл.
Полезно для определения единиц, на которые у вас есть зависимости, но мало используйте, а также для определения единиц "жира-свиней", которые берут с собой все вместе с кухонной раковиной.
FWIW, сокращение зависимостей и устранение свиней не только выгодно для исполняемого размера, но и выгодно в будущем, когда придет время перейти на новую версию.
Существует (довольно старая) утилита, называемая UsgParse. Он создает древовидную структуру всех единиц, на которые ссылается проект.
Я нашел копию на сайте NexusDB через http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2004-03/0231.html
источник: http://www.nexusdb.com/downloads/USGParse/USGParse_src.zip
binary: http://www.nexusdb.com/downloads/USGParse/USGParse.zip