1. ホーム

[解決済み】Javaプロジェクトで未使用/枯れたコードを見つける方法【終了しました

2022-03-28 17:37:14

質問

大規模なJavaプロジェクトで、使われていないコードや枯れたコードを見つけるために、どのようなツールを使っていますか?私たちの製品は何年も前から開発されており、もう使われていないコードを手作業で検出するのは非常に難しくなってきています。しかし、できるだけ多くの未使用のコードを削除するように努めています。

一般的な戦略やテクニック(特定のツール以外)の提案も歓迎します。

編集する なお、私たちはすでにコードカバレッジツール(Clover、IntelliJ)を使用していますが、これらはほとんど役に立ちません。死んだコードにはまだユニットテストがあり、カバーされていると表示されます。理想的なツールは、それに依存する他のコードがほとんどないコードのクラスタを識別し、ドキュメントを手動で検査できるようにすることだと思います。

解決方法は?

私なら、実行中のシステムにコード使用量のログを記録する装置を導入し、数ヶ月または数年間使用されていないコードの検査を開始します。

例えば、未使用のクラスに興味があるなら、インスタンスが作成されたときにログを取るようにすべてのクラスをインスツルメンテーションすることができます。そして、小さなスクリプトがこのログをクラスの完全なリストと比較して、使われていないクラスを見つけることができるのです。

もちろん、メソッドレベルで行う場合は、パフォーマンスを考慮する必要があります。例えば、メソッドは最初に使用されたものだけを記録することができます。私は、これがJavaでどのように行われるのが最善であるかを知りません。私たちは、Smalltalkでこれを行いました。Smalltalkは動的言語なので、実行時にコードを修正することができます。私たちは、ロギングコールを持つすべてのメソッドをインストルメント化し、メソッドが最初にロギングされた後、ロギングコードをアンインストールします。同じようなことが、Javaで静的なブーリアン・フラグでできるかもしれません...。