146

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

4

5 に答える 5

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

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

  • Java/宣言の冗長性/未使用の宣言をクリックします
  • 右下で「オンザフライエディタ設定」を選択します
  • チェック フィールドのチェックを外し、...、パラメータをチェックします。チェッククラスのみにチェックを入れてください。
  • OKを押します

設定が閉じます

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

検索開始

  • 終了したら、アイデアの下部にあるジョブの状態を確認してください。結果と、混乱したコードをクリーンアップする素晴らしい感覚をお楽しみください。:)
于 2016-07-07T11:13:00.997 に答える
10

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

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

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

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

于 2015-04-29T04:43:36.487 に答える
1

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

于 2015-04-23T07:19:30.677 に答える