2009-05-19 5 views
14

Ciò dovrebbe ridurre un po 'la dimensione dell'eseguibile in alcuni dei miei progetti molto grandi. Sono sicuro che ci sarebbero anche altri vantaggi.Come posso identificare ed eliminare unità inutilizzate nella "clausola usa" in Delphi 7?

EDIT: C'è forse un'utilità che analizzerà il progetto e rimuoverà automaticamente quelli ridondanti? Ho 100 anni di progetti e "rimozione automatica" sarebbe il primo premio, anche se, se dovessi, andrò in modo manuale con l'aiuto di identificare le utilità.

risposta

12

Si potrebbe voler dare un'occhiata a CnPack.

CnPack include un assistente per la pulizia degli utenti che non mi ha ancora deluso.

+0

Fa una rimozione automatica se lo si desidera? –

+4

+1 per CnPack: presenta alcune opzioni intelligenti che evitano errori comuni come unità con sezioni di inizializzazione – mjn

+3

@ mm2010. In effetti, non ha un'opzione "mostrami cosa stai per rimuovere", solo un rapporto "dopo" l'azione di ciò che è stato rimosso. Sebbene non abbia mai avuto problemi con questo, ti consiglio di fare il backup dei tuoi file sorgente in un sistema di controllo del codice sorgente. –

1

Vedere alcune delle risposte here.

9

Ero abituato a utilizzare Icarus che mi ha fornito un report di voci di utilizzo inutilizzate.

Dalla pagina web

ICARUS analizza Delphi o Borland Pascal codice sorgente e genera una utilizzi Report. Questo rapporto ti aiuterà a rimuovere le unità non necessarie dai tuoi elenchi di usi. Saprai anche quali unità possono essere spostate dall'interfaccia utilizza l'elenco per l'elenco degli usi dell'implementazione.

Rimozione usi non utilizzati riferimenti ha molteplici vantaggi: codice più pulito per mantenere, non c'è bisogno di preoccuparsi di codice che non viene utilizzato Codice da sezioni di inizializzazione e finalizzazione in unità inutilizzati non è legata in Compilation corre più liscia e più veloce

ICARUS è molto facile da usare, basta selezionare un file sorgente, impostare alcune opzioni e iniziare l'analisi. Oppure lascia che il wizard integrato ti guidi attraverso questo processo.

ICARUS è GRATUITO.

2

Tale strumento non può mai analizzare se le sezioni di inizializzazione o di finalizzazione di un'unità utilizzata devono essere eseguite o meno. La rimozione di unità dagli usi potrebbe comportare l'impossibilità di eseguire le sezioni di inizializzazione e di finalizzazione e quindi generare errori.

+0

Forse la rimozione può essere una domanda opzionale in tale utilità? –

+1

Le unità in cui solo le sezioni di inizializzazione/finalizzazione sono importanti sono piuttosto rare. In generale, queste sezioni sono utilizzate per inizializzare il codice per l'unità stessa, non per l'applicazione generica. Inoltre, uno strumento come ICARUS controlla queste sezioni o può essere fatto per analizzare quelle sezioni e verificare se sono importanti. –

+1

CnPack ha un'opzione per saltare le unità con l'inizializzazione – mjn

1

Peganza ha strumenti simili: http://www.peganza.com/

+2

I report generati da Icarus sono sovraffollati di informazioni inutili. Davvero difficile capire cosa provano a mostrarti. – Ampere

2

tener presente che il linker metterà a nudo tutto ciò che può' essere chiamato Se non viene fatto uso di un'unità e non ha alcuna inizializzazione o finalizzazione, sarà comunque completamente spogliato. Tutto ciò che fa riferimento all'inizializzazione o alla finalizzazione rimarrà, ma in generale ciò non dovrebbe comportare molto.

È possibile che un'unità consista solo di inizializzazione, in modo che lo sbiadimento completo sia comunque limitato. Le unità che semplicemente cambiano il comportamento del sistema in qualche modo potrebbero benissimo non avere riferimenti e tuttavia essere necessarie. (Mi viene in mente il gestore della memoria di sostituzione con un buon monitoraggio delle perdite.Mentre ha cose a cui puoi fare riferimento non è necessario, basta usarlo e ottenere il rapporto sulle perdite. Nice double-check per il tuo codice.)

Problemi correlati