検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、IntelliJ IDEA は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。


既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。
各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数 $variable_name$ で構成されます。修飾子は、検索テンプレートの変数に依存します。

カウント修飾子
数修飾子は、出現回数を指定します。
例: new java.lang.RuntimeException($x$) 検索テンプレートで、$x$ 変数の場合、数修飾子フィールドに最小数と最大数を指定します。無制限の最大数を設定するには、修飾子フィールドに空の値を指定します。

IntelliJ IDEA は変数に [0, ∞ ] を追加し、指定された範囲の数値を検索します。
参照修飾子
リファレンス修飾子を使用すると、変数内の他の検索テンプレートを参照できます。
参照には常に事前設定または保存されたテンプレートの名前が含まれ、自動補完を使用してこのフィールドに入力できます。
例: $MethodCalls$ 変数の場合、リファレンス修飾子フィールドにアノテーション付きのメソッドを入力します。

IntelliJ IDEA は、アノテーション付きのメソッドへのメソッド呼び出しを検索します。
型修飾子
タイプ修飾子は、指定された変数に期待される値または式の型を追加します。
例: $expression$ 変数の場合、タイプ修飾子フィールドに int と入力します。

IntelliJ IDEA は、ボクシングが実行される場所を整数で検索します。
テキストフィルター
テキスト修飾子は、正規表現またはプレーンテキストに対して変数をチェックします。
例: 特定のインターフェースを実装するクラスを検索できます。この場合、テキスト修飾子にインターフェースの完全修飾名を追加します。また、型階層の中オプションを選択すると、Cloneable を間接的に実装するクラスも検索に含まれます。このオプションが選択されていない場合、Cloneable を直接実装するクラスのみが含まれます。

スクリプト制約
スクリプト修飾子は、Groovy スクリプト制約を検索テンプレートに追加します。スクリプト制約は、特定の言語構造を検索するときに使用されます。
例: 指定された数のパラメーターを持つコンストラクター、または指定された可視性修飾子を持つメンバー
テンプレートで使用されるすべての変数は、スクリプト制約からアクセスできます。変数にスクリプト制約を追加すると、IntelliJ IDEA はそれを PSI ツリーと照合します。この変数は実際には PSI ツリーのノード(英語)です。
たとえば、メソッドにマッチする変数、toString() メソッドがあるとします。この変数は実際には PsiMethod ノードです。variable.parent を取得すると、PsiClass ノードなどが生成されます。variable.text はメソッドのテキスト全体を表示します。メソッドの名前だけが必要な場合は、variable.name を使用できます。
別のケースでは、構造検索と置換変数は、変数、PsiReferenceExpression への参照など、一部の式に一致することがあります。式には名前はありませんが、式のテキスト全体を検索すると、その変数が参照している変数の名前が表示されます。
次の既存のテンプレートで使用されているスクリプト制約の構文を確認できます。
定数パラメーターを使用したサンプルメソッドの呼び出し
クラス
パラメーターのないコンストラクターを持つクラス
final ではない static フィールド
未実装または未拡張のインターフェース
フィールド / 変数の読み込み
名テンプレートが更新されたフィールド / 変数

関連ページ:
構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、IntelliJ IDEA はコードを正規表現として扱います。構造検索および置換(SSR)アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。IntelliJ IDEA は、作成した検索テンプレートと適用した条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。ターゲットを構造的に検索するメインメニューでに移動して、構造...
構造検索と置換の例
ご存知のように、通常の検索と構造検索の主な違いは、構造検索ではプログラミング言語の構造テンプレートを探していることです。構造検索の利点は、既存のテンプレートに基づいてパターンを作成し、コードの検索と置換にかかる時間を節約できることです。既存のテンプレートの広範なリストは、単純なパターンからより複雑なパターンまで、多くのユースケースをカバーしています。パターン内の各アイテムは、両側の $ 記号によって制限される変数で構成されます。パターンの例:簡単なタスクから始めて、キーワードを使用して開いてい...