構造検索と置換を使用する
構造検索と置換は、コードの特定のパターンを検索し、検索を絞り込む修飾子を追加できる強力なツールです。
このチュートリアルでは、フィールド宣言を検索し、修飾子を追加し、変更されたテンプレートに基づいてコードインスペクションを作成します。 必要に応じて、詳細に入る前に関連するビデオを見ることができます。 ビデオは、以前のバージョンの IntelliJ IDEA 用に作成されたものであるため、若干異なる場合があります。
構造検索 ダイアログを開き、既存のテンプレートの 1 つを検索に使用します。
既存のテンプレート(フィールド宣言)を使用する
メインメニューで へ移動します。
構造検索 ダイアログで、 ノードの下で クラスの全フィールド を選択して、すべてのフィールド宣言を検索し、 検索 をクリックします。

その結果、 検索 ツールウィンドウでは、IntelliJ IDEA は Java コードで宣言されたすべてのフィールドを表示します。

次に、構造検索ダイアログに戻り、事前定義されたテンプレートを少し変更します。 ちなみに、 どこでも検索 ウィンドウを使用して、検索ダイアログにアクセスできます。
定義済みのテンプレートを変更する
Shift を 2 回押して、 どこでも検索 ウィンドウを開きます。
検索クエリを入力し始め、検索結果のリストで 構造検索 をクリックして構造検索ダイアログを開きます。

構造検索 ダイアログでテンプレートを更新し、変数
$Field$の前にfinalを追加してファイナルフィールドのみを検索するようにします。 ダイアログではコード補完がサポートされています。
コードを再帰的に検索し、大文字と小文字を区別し、Javaタイプのファイルのみを検索します。

範囲を変更すると、IntelliJ IDEAは指定された範囲内でコードパターンが見つかるかどうかをすぐに通知できます。

検索 ツールウィンドウで結果を確認してください。

構造検索を使用すると、興味深い検索を実行できます。 例として、別の既存のテンプレート(メソッド呼び出し )を選択してみましょう。
既存のテンプレート(メソッド呼び出し)を使用する
構造検索 ダイアログで、
をクリックし、 既存テンプレート を選択します。
既存のテンプレートのリストを開き、 式 ノードの下にある メソッド呼び出し テンプレートを選択します。

ここで検索を実行すると、コード内のすべてのメソッド呼び出しを含む結果が得られます。 テンプレートを少し変更し、探しているものをより具体的にするために修飾子を使用する必要があります。 修飾子
テキストを追加して、printというメソッドを定義しましょう。printというメソッドの呼び出しを探します。正規表現を追加することもできます。例えば、
printを含むメソッドのすべての呼び出しを見つけることです。 そのために、printをprint.*に切り替えます。検索結果には、印刷だけでなく
printlnおよびprintfも含まれます。検索パターンを変更し、結果が単一のパラメータのみを持つメソッドのみを表示するようにしましょう。 変数
$Parameter$をクリックし、カウント修飾子min=1max=1を追加します。
この場合、検索結果は少なくなります。
これらのすべてのメソッド呼び出しを System.out ではなくロギング呼び出しに置き換えるために、この検索を実行していると仮定します。 ロギングメソッドは文字列のみを取り、他のタイプは取りません。
まず、文字列を渡すメソッドを見つけましょう。
構造検索 ダイアログで、変数
$Parameter$に対して タイプ 修飾子を追加します。
Search をクリックします。 その結果、リテラル文字列または型
Stringの変数のみを受け取るprintメソッドのリストが表示されます。
さあ、交換しましょう。
コードを置換する
構造置換 にアクセスするには、 どこでも検索 ウィンドウを使用します。
置換テンプレート の 構造置換 ダイアログで、検索結果を置き換えるコードを追加します。 私たちの場合は
java.util.logging.Logger.getLogger(this.getClass().getName()).fine($Parameter$)
です
検索 をクリックします。
検索 ツールウィンドウで結果を確認し、置換オプションを使用してすべての結果または選択したものだけを置換します。

ご覧のとおり、コードが変更されています。

このテンプレートを保存して、後で参照することができます。
修正したテンプレートを保存する
構造置換 ダイアログで、
をクリックします。
表示されたリストで、 テンプレートの保存 を選択します。
テンプレートの名前(print String コール )を追加して、 OK をクリックしましょう。
テンプレートは、 既存テンプレート ダイアログの ユーザー定義 ノードに保存されます。

構造置換 ダイアログで、
をクリックして、最近の検索の履歴を確認し、すばやく再実行できます。

テンプレートをインスペクションとして使用することもできるため、同じコードに遭遇すると警告が表示され、コードをすばやく置き換えることができます。
カスタム検査を作成する
検索 ツールウィンドウで、置換パターンの結果が表示されたら、 テンプレートからインスペクションを作成 をクリックします。
開いたダイアログで、テンプレート
print String コールの名前を追加します。
ツールチップを追加して OK をクリックすることができます。
設定 ダイアログ(Ctrl+Alt+S )で、 に移動します。
インスペクション ページで、作成した検査を見つけるために 構造検索 ノードを開きます。

これで、エディターでコードをすばやく修正したり、 問題 ビューを使用して警告を確認したり、新しいコードに置き換えたりすることができます。

インスペクション設定から直接、カスタム構造検索インスペクションを追加できます。
検査設定からカスタム検査を作成する
設定 ダイアログ(Ctrl+Alt+S )で、 に移動します。
インスペクション ページで、 構造検索 ノードを選択し、
をクリックします。 インスペクションは、検索テンプレートまたは置換テンプレートに基づいて作成できます。 置換テンプレートの追加 を選択します。
構造置換 ダイアログで、検索パターンを少し変更してみましょう。
$Parameter$変数のタイプ修飾子をintに変更しましょう。replace パターンで、コードを微調整しましょう。
java.util.logging.Logger.getLogger(this.getClass().getName()).fine(String.valueOf($Parameter$))
開いたダイアログで、検査の名前
print int callsを追加し OK をクリックします。
新しいインスペクションが 構造検索 に追加され、整数を出力するインスタンスを検索するために実行できます。 このようなコードが見つかったら、ロガー呼び出しに置き換えて、見つかったパラメーターを文字列に変換できます。
インスペクションは、その名前を使用して個別に実行できます。
構造検索検査を実行する
Ctrl+Alt+Shift+I を押すか、メインメニューで に移動します。
開いたダイアログで、検査名
print String コールを入力します。
実行 'print String calls' ダイアログでデフォルトオプションのまま OK をクリックします。

結果を インスペクション結果 ツールウィンドウで確認できます。
