Как я могу идентифицировать и избавиться от неиспользуемых единиц в "пункте использования" в Delphi 7?

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

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

7 ответов

Решение

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

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

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

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

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

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

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

ИКАРУС БЕСПЛАТНО.

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

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

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

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

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

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

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

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

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