未使用のユニットを自動的に削除する方法は、というセクションをDelphi XE2のプロジェクトのすべてのソースファイルに使用していますか?Delphi XE2のすべてのソースファイルから未使用のユニットを削除するには?
P.S.それ以降はIDEがはるかに高速に動作します。
未使用のユニットを自動的に削除する方法は、というセクションをDelphi XE2のプロジェクトのすべてのソースファイルに使用していますか?Delphi XE2のすべてのソースファイルから未使用のユニットを削除するには?
P.S.それ以降はIDEがはるかに高速に動作します。
これを完全に自動化する方法はありません。
は、私はそのウィザードを取るアプローチを知ってるいくつかのツールがあります。
ペガザのツールは、単にレポートを表示します。 CnPackは未使用のユニットを削除するように促しますが、確認する必要があります。 Lazarusはユニットのリストをあなたに提示しますは未使用であり、それらのいくつかまたはすべてを削除する選択肢を与えます。
なぜ自動化されないのですか?
これは静的解析であるためです。最も洗練されたツールであっても、ユニット全体ではなく実行時に特定のコード行が使用されるかどうかを100%確実に判断することはできません。これらのツールは、この偉業を達成するために独自のパーサーを実装していますが、それは愚かな証拠ではありません。
いずれにしても、uses節をクリーンアップする主な利点は、ソース自体とコード補完機能の両方から視覚的な混乱を取り除くことです。はい、コンパイル中にいくつかのパフォーマンスが得られ、特定のIDEバックグラウンド操作はわずかに高速化されますが、IDEが奇跡的にスピードアップすると思うと、あなたは失望するでしょう。独立に加工することができる小片にプロジェクトを壊す
あなたがすることで、より良いIDEとコンパイラの性能が表示されます。
私は確かに、未使用のユニット参照を削除することを断念するつもりはありません。私が言ったように、それはあなたのソースをunclutterするのに役立ちます。あなたが正しい理由でそれをやっていることを確認してください。
私はCnWizardsを使用しましたが、あまりにも多くを取り除く傾向があります –
私たちはすでに特別に設計されたツールでこれを行いました - そしてIDE速度は何度か増加しました。コンパイルプロセス - 約5回。 (しかし私はこのツールを別のプロジェクトに使うことはできません。) – Dmitry
...
けど...フリーウェアを...それらを識別イカルス見てそこのツールがありますhttp://www.peganza.com/downloads.htm
[' the description'] //www.peganza.com/products_icarus.htm)は、ICARUSがDelphiやBorland Pascalのソースコードを解析し、Uses Reportを生成すると述べています。 – TLama
@TLamaでは、「未使用」のユニットを自動的に削除するとプログラムが壊れることがあります。直接使用されていない派生クラスを登録するユニットを想像してください。 Peganzas Pascal Analyzer(Icarusの一部です)の長い時間と幸せなユーザーとして、私は自動除去がないことを嬉しく思っています。 –
@Uwe、私は危険を知っていますが、CnWizardの 'Use Cleaner'は、あなたが削除したいファイルを選択することができる[これのようなダイアログ](http://i.imgur.com/8WoWEb7.png)を提供しますリストを使用してそれを進めてください。それは完全に自動化されていません。ファイルを選択して削除するのはあなたのものです。イカルスからの報告書では、手動ですべての作業をしなければならず、それは面倒です(そして、この質問で質問されたように、未使用のユニットを自動的に削除する方法)。 – TLama
CnPackには、ユニット単位で問題なく使用していた「クリーナーを使用...」オプションがあります。また、私はプロジェクトの規模のために試していない、プロジェクト全体を行う能力を持っています。
私はCnWizardを使用しましたが、複雑なプロジェクトではあまりにも多くのものを削除する傾向があります。 –
ちょうどヘッドアップ。作業を行うプロセスはメモリをリークしますので、あなたがベルリン以上にいない限り、しばらくするとメモリの問題に陥る可能性があります(特にProjectGroupsを使用するとメモリがリークするようです)。 –
質問はより正確に行われます。 「保留中」フラグをキャンセルしてください。この質問はDelphiの大規模なプロジェクトでは非常に重要です。答えはすべての開発者にとって非常に役立ちます。 – Dmitry
"未使用ユニット"の意味を正確に定義できますか?初期化コードを持つユニットは、エクスポートされたシンボルを参照しなくても、プログラムに影響を与える可能性があることに注意してください。 –
ユニットを自動的に取り外すことは、あなたが思っているほど単純ではありません。ユニットの中には何も呼び出されていないように見えても、必要なことをする初期化セクションがあります(例えば、COMを設定するために 'CoInitialize'を呼び出すなど)。 (あなたが手動で 'CoInitialize'を手動で呼び出すことができるのは分かりますが、その点はユニットが何をしているのかを常に自動的に伝えることができないということです) –