2009-05-19 19 views
14

Cela devrait réduire la taille de l'exécutable un peu dans certains de mes très gros projets. Je suis sûr qu'il y aurait d'autres avantages aussi.Comment puis-je identifier et supprimer des unités inutilisées dans la clause "uses" de Delphi 7?

EDIT: Y a-t-il peut-être un utilitaire qui va scanner le projet et supprimer les redondants automatiquement? J'ai des centaines de projets et "supprimer automatiquement" serait le premier prix, mais si je dois aller de l'avant avec l'aide de l'identification des services publics.

Répondre

12

Vous pouvez jeter un oeil à à CnPack.

CnPack comprend un assistant de nettoyage Utilise Wich ne m'a pas encore échoué.

+0

Est-ce qu'il fait une suppression automatique si désiré? –

+4

+1 pour CnPack - il a quelques options intelligentes qui évitent les pièges communs comme les unités avec les sections d'initialisation – mjn

+3

@ mm2010, il a. En fait, il n'a pas une option «montrez-moi ce que vous allez supprimer», seulement un rapport «après» l'action de ce qui a été supprimé. Bien que je n'ai jamais eu de problème, je vous recommande de sauvegarder vos fichiers source dans un système de contrôle de source. –

1

Voir quelques-unes des réponses here.

9

J'avais l'habitude d'utiliser Icarus qui m'a donné un rapport des entrées d'utilisations inutilisées.

A partir de la page Web

ICARUS Delphi ou Borland parse Pascal code source et génère un rapport utilisations. Ce rapport vous aidera à supprimer les unités inutiles de vos listes d'utilisation. Vous saurez également quelles unités pouvant être déplacées depuis l'interface utilisent la liste vers la liste des utilisations de l'implémentation.

Suppression utilise des références inutilisées a plusieurs avantages: code plus propre à maintenir, pas besoin de se soucier de code non utilisé code des sections d'initialisation et de finalisation dans les unités non utilisées ne sont pas liées à compilation lisse et plus vite

ICARUS est très facile à utiliser, il suffit de sélectionner un fichier source, définir quelques options et commencer à analyser. Ou laissez l'assistant intégré vous guider dans ce processus.

ICARE est un logiciel gratuit.

2

Un tel outil ne peut jamais analyser si les sections d'initialisation ou de finalisation d'une unité utilisée doivent être exécutées ou non. Supprimer des unités des utilisations pourrait entraîner l'impossibilité d'exécuter des sections d'initialisation et de finalisation et donc entraîner des bogues.

+0

Peut-être que la suppression peut être une question facultative dans un tel utilitaire? –

+1

Les unités où seules les sections d'initialisation/finalisation sont importantes sont assez rares. En général, ces sections sont utilisées pour initialiser le code de l'unité elle-même, pas pour l'application générique. En outre, un outil comme ICARUS vérifie ces sections ou peut être fait pour analyser ces sections et vérifier si elles sont importantes. –

+1

CnPack a une option pour ignorer les unités avec l'initialisation – mjn

1

Peganza dispose d'outils similaires: http://www.peganza.com/

+2

Les rapports générés par Icarus sont surchargés d'informations inutiles. Vraiment difficile de comprendre ce qu'ils essaient de vous montrer. – Ampere

2

Rappelez-vous que l'éditeur de liens bande tout ce qui peut » t être appelé. Si on n'utilise pas une unité et qu'elle n'a pas d'initialisation ou de finalisation, elle sera complètement effacée de toute façon. Tout ce qui est référencé dans l'initialisation ou la finalisation restera mais en général cela ne devrait pas apporter beaucoup de toute façon.

Il est possible pour une unité d'initialisation consiste seulement si décapage entièrement automatique est limitée de toute façon. Les unités qui changent simplement le comportement du système d'une manière ou d'une autre pourraient très bien ne pas avoir de références et être pourtant nécessaires. (Le gestionnaire de mémoire de remplacement avec un bon suivi des fuites me vient à l'esprit.Bien qu'il y ait des choses que vous pouvez référencer, il n'y a pas besoin de le faire, il suffit de l'utiliser et d'obtenir le rapport de fuite. Nice double-vérifier pour votre code.)

Questions connexes