2017-11-19 25 views
5

IntelliJ IDEA 2017.2.6次のJavaクラスがあります。IntelliJ IDEAは一部の未使用のメソッドをグレーアウトしますが、すべてではありません

通常、IntelliJは未使用のプロパティを明るいグレーで表示します。このクラスでは、getReason()しかグレーではありません。 コンストラクタやフィールドをグレーアウトしないことは意味があります。メソッドtoJSON()は、抽象スーパークラスEinzMessageBodyで定義されているため、存在しなければならないため、これもグレー表示されないようにしてください。 getReason()は決して使用されないため、グレー表示されます。 しかし、なぜgetUsername()はグレー表示されていませんか? 右クリックしてを選択すると、が見つかりません。IntelliJは、使用状況が見つからないと報告します。

私は>ファイル名を指定して実行検査によって名前this questionを認識していますが、を実行すると>分析コードを点検し、分析>未使用のプロパティは、この上の任意の効果を持っていないようです。どちらもIDEを再起動しません。

キャッシュを無効にして再起動は、最初に表示がリセットされてグレー表示されないようにしますが、インデックス作成が完了すると再び強調表示されます。

は、ここでそれがgetReason()getUsername()もないのIntelliJ How it looks like for me

に表示されたスーパークラスEinzMessageBodyだけtoJSON()を指定している方法です。

getReason()getUsername()の違いは何ですか? extends EinzMessageBodyと何も変わりません@Override注釈を削除

  • :HonzaZidekさんのコメント@について

  • 完全に空のプロジェクトを作成してのみ、このクラスを貼り付けるとEinzMessageBodyはすべてがtoJson()方法以外はグレー表示になります。これは、クラスがインスタンス化されていないため、コンストラクタがグレー表示され、getReason()getUsername()の両方が同じように動作するため、期待どおりです(両方がグレー表示されます)。

    • 実際のプロジェクト設定のように、クラスを別のサブパッケージに移動すると、これは期待どおりに動作します。

    • これは、クラスをインスタンス化するときに、期待どおりに動作します。コンストラクタがグレー表示されなくなると、getReason()getBody()は正しくグレー表示されます。

    • (デスクトップPCではなく)と同じ動作が同様にそこにたまたま私はちょうど私のラップトップ上で引っ張っ

getUsername()のいずれかの用途についても検索しました。他のサブクラスのEinzMessageBodyに見つかりました。これを削除しても、getUsername()EinzUnregisterResponseMessageBodyはグレー表示に変更されませんでした。

This answerはIntelliJのは、パフォーマンス上の理由から、一般的に使用される名前を確認していない可能性があるため、>ファイル名を指定して実行検査によって名>未使用宣言を分析を実行することを示唆しています。 getReason()getUsername()は未使用ですが、表示スタイルは変わりません。

+1

が、ユーザー名や理由がこれまでに二重引用符が含まれている場合は、あなたのコードが解除されます。 –

+0

ありがとう!これはスタブとしてのみ意図されていましたが、私はおそらくそれを逃したでしょう:) – lucidbrot

+0

それでは、それはWebアプリケーションですか? Webページからフィールドを参照していませんか?またはXML構成からですか? IntelliJは、getterのgetUsernameを 'username'フィールドとしてのみ参照されているとしても* used *としてマークするのに十分なインテリジェントです。有料バージョンでは、「Find Usages」にこれらの場所が表示されますが、コミュニティバージョンであればわかりません。少なくとも、IntelliJはフィールドとそのアクセサ(セッターとゲッター)を一緒に評価します(Javaがコンセプトを受け入れていなくても) 'username'を*プロパティ*と見なすべきです。 –

答えて

1

あなたが疑っているように、IntelliJ Ideaに組み込まれている最適化が本当に怖いです。少なくともJetBrains's Issue Trackerにバグや機能リクエストとして報告することができます。少なくとも、最適化をオフにするオプションがあると良いでしょう。

既存の回答https://stackoverflow.com/a/32049386/2886891https://stackoverflow.com/a/40870673/2886891に続いて、SettingsのIntelliJ Ideaの説明への参照を追加しています。 | Inspections | | Declaration Redundancy | Unused declaration

未使用のメンバーの中には、エディタのハイライト中に報告されないものがあります。パフォーマンス上の理由から、非プライベートメンバーは、プロジェクトで名前がほとんど発生しない場合にのみチェックされます。

enter image description here

無関係
+0

ああ、そうつまり、これを実行しても表示スタイルは変わりません。さて、すべての今クリア、ありがとう! – lucidbrot

関連する問題