web-dev-qa-db-ja.com

Intellij Ideaで未使用のクラスをすべて見つける方法は?

Intellij Ideaのすべての未使用コードを見つけることができる検査「未使用宣言」があります。 ( この質問 を参照)しかし、すべての未使用のクラス、notメソッド、変数などを検索したいOnlyクラス。 (3000の結果リストでクラスのみを見つけるのは困難です)。どうすればそれができますか?

103
Cherry
  • 押す Ctrl+Shift+A (Macで Command+Shift+A
  • 「未使用宣言」を入力してください
  • 「未使用の宣言」をダブルクリックします

設定がポップアップします

  • Java /宣言の冗長性/未使用の宣言をクリックします
  • 右下で[オンザフライエディター設定]を選択します
  • チェックフィールドのチェックを外し、...、パラメータをチェックします。チェッククラスのみをチェックする必要があります。
  • OKを押す

設定が閉じます

  • メニューバーで、[名前による検査/分析の実行]をクリックします(または Ctrl+Alt+Shift+I -Macで Command+Option+Shift+I
  • 「未使用のdecla」というテキストを挿入します
  • 「未使用の宣言Java |宣言の冗長性」を選択します

検索開始

  • 完了したら、Ideaの下部にあるジョブの状態を確認します。結果と混乱したコードをクリーンアップする素晴らしい感覚をお楽しみください。 :)
183
BlondCode

これは実行可能だとは思わない。この機能は、他の「未使用のXXXを削除する」リファクタリングができる方法で安全に使用できないため、意図的にIDEから除外されていると思われます。

IDEA(およびAFAIK、NetBeans)が検索する未使用の宣言は、プライベートメンバーとローカル変数を対象としています。そのクラスまたはスコープの外部から動的にアクセスすることもできません。 (まあ、少なくともReflectionやJVMのハッキングであなたがするべきではないことはしません。)外部コードがあなたのライブラリで何をしても、それらのスコープは限られているので使用されません。 IDEはすべてを見ることができます。コンパイラーは、コードを調べるだけでこれを判断できます。

クラスの場合、publicアクセスを持っていなくても、Class.forName()を使用して動的に参照できます。これは実際にライブコードで発生します。したがって、プロジェクトのコード内で明らかに使用されていない場合でも、ライブラリの実行に使用する外部コードに応じて使用される可能性があります。したがって、IDEは、これらのクラスを削除しても、外部から観察可能な動作が変更されないことを保証できません。

IDEAはこの動作を提供しないと思うのはこのためです。ユーザーに安全に対する誤った期待を与える可能性があり、それらを削除することは安全なリファクタリングではありません。

9
Andrew Janke

次の設定でUnused Symbolインスペクションを調べる必要があるかもしれません。

enter image description here

0
Vic

これがあなたの質問に答えるかどうかはわかりませんが、過去にFortifyとしてツールを使用して、プロジェクトでコードレビュールールを実行しました。これは、未使用のインポート、デッドコード、未使用のクラスなどいくつかの無料のプラグイン/ソフトウェアが同じもので利用できるようになると確信しています。

0
sunny