Как я могу определить и избавиться от неиспользуемых единиц в «пункте использования» в Delphi 7? - PullRequest
14 голосов
/ 19 мая 2009

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

РЕДАКТИРОВАТЬ: Возможно, есть утилита, которая будет сканировать проект и автоматически удалять лишние? У меня есть сотни проектов, и «автоматическое удаление» будет первым призом, хотя, если потребуется, я пойду ручным путем с помощью идентификации утилит.

Ответы [ 7 ]

13 голосов
/ 19 мая 2009

Возможно, вы захотите взглянуть на CnPack .

CnPack включает в себя мастера очистки Uses, который еще не подвел меня.

9 голосов
/ 19 мая 2009

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

С веб-страницы

ICARUS анализирует исходный код Delphi или Borland Pascal и генерирует отчет об использовании. Этот отчет поможет вам удалить ненужные единицы из ваших списков использования. Вы также будете знать, какие модули можно переместить из списка использований интерфейса в список использований реализации.

Удаление неиспользуемых ссылок имеет несколько преимуществ: Более чистый код для поддержки, не нужно беспокоиться о коде, который не используется Код из разделов инициализации и финализации в неиспользуемых единицах не связан в Компиляция выполняется быстрее и быстрее

ICARUS очень прост в использовании, просто выберите исходный файл, установите несколько параметров и начните анализ. Или пусть встроенный мастер проведет вас через этот процесс.

ICARUS БЕСПЛАТНО.

2 голосов
/ 20 мая 2009

Помните, что компоновщик удалит все, что не может быть вызвано. Если юнит не используется, и у него нет инициализации или финализации, он все равно будет полностью удален. Все, на что ссылаются при инициализации или финализации, останется, но в общем случае это не должно сильно влиять.

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

2 голосов
/ 19 мая 2009

Если ваш код можно скомпилировать с помощью Free Pascal, компилятор Free Pascal также выдаст подсказки о неиспользуемых единицах в вашем коде.

См. Также эту запись SO с дополнительной информацией о возможных проблемах, таких как методы на основе RTTI:

https://stackoverflow.com/questions/605977/tools-to-detect-dead-code-in-delphi2007-or-above/

2 голосов
/ 19 мая 2009

Такой инструмент никогда не сможет проанализировать, нужно ли выполнять разделы инициализации или финализации используемого модуля или нет. Удаление юнитов из использования может привести к неработающим разделам инициализации и финализации и, следовательно, к ошибкам.

1 голос
/ 19 мая 2009

Peganza имеет похожие инструменты: http://www.peganza.com/

1 голос
/ 19 мая 2009

См. Некоторые ответы здесь .

...