構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。 正規表現を使用しても、DataGripはコードを通常のテキストとして扱います。 構造検索および置換 (SSR )アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。
DataGripは、作成した 検索テンプレートと適用した 条件に基づいて、ソースコードの断片を検索し、置き換えます。
構造検索を実行するときは、検索テンプレートによって表される可能性のある値を探します。 検索テンプレートがソースコードの一部と一致する場合、ユーザー定義のテンプレートに適合する式がハイライトされます。 検索テンプレートは、テキスト、変数、フィルター、スコープ、コンテキストで構成される検索クエリです。 これらすべてのツールを使用して、検索の範囲を絞り込み、より正確な結果を得ることができます。
検索ツール
変数 は、 $name$ や $field$ のようにドル記号で囲まれた文字のシーケンスです。
以下のスクリーンショットは、構造体の検索に使用されるテンプレートを示しています。

修飾子 は、変数や検索テンプレートに適用できるユーザー定義の条件です。 これにより、次のことが可能になります。
変数が何回出現するか確認する
変数の型を検証する
変数をプレーンテキストまたは正規表現と照合する
Groovy スクリプトを適用します。
使用可能な修飾子の完全なリストについては、 テンプレート、修飾子、スクリプト制約を検索する を参照してください。
次の例は、前と同じテンプレートですが、 $name$ 変数に テキスト 修飾子を Employee に設定しています。 エディターでハイライト表示された検索結果がどのように変化したかに注目してください。
[文字列] 値で 型 修飾子を適用すると、 選択 ステートメント内のすべての文字列値が検索されます。 しかし、テーブル定義(CREATE TABLE ステートメント)内のすべての文字列型を検索するには、 型 のコンテキストを適用する必要があります。 コンテキストを設定するには、フィルターも使用します。 ただし、変数の場合、フィルターは特定の変数に適用されますが、コンテキストフィルターは検索テンプレート全体に適用されます。

コンテキスト は、検索エンジンが変数を識別するのに役立つ組み込みの内部テンプレートです。 コンテキストは、言語のあいまいさを排除するために SQL にのみ使用されます。 コンテキストを使用することで、検索エンジンにどこでどの変数を検索するかを指示できます。 検索テンプレートには、次のコンテキストを設定できます。
式: 結果として値になる 1 つ以上の値、演算子、SQL 関数。 式 のコンテキストを使用すると、IDE は
SELECT $expression_1$ FROM table_name where $expression_2$などの構造で$expression_1$と$expression_2$を検索します。型: テーブル列に格納できる値のタイプ(たとえば、
varchar(100))。 型 コンテキストを使用すると、IDE はCREATE TABLE table_name (id_1 $type_1$, id_2 $type_2$)などの構造で$type_1$と$type_2$を検索します。クエリの節:
DISTINCT、FROM、WHERE、ORDER BY、GROUP BYやHAVINGのようなクエリ句。 クエリの節 のコンテキストでは、変数を含む句キーワードを使用する必要があります。 例: IDE はselect * from table_name $variables$;のような構造でwhere $variables$を検索します。WHERE句にa + bのような式がある場合は、where $variable_1$ + $variable_2$;のように変数を明示的に指定できます。 また、任意の変数を検索ターゲットとして定義できます。

検索ターゲット は、テンプレート内のどの部分を IDE で検索するか、単一の変数かテンプレート全体かを指定できるリストです。 例えば、検索ターゲットを使って、 where $a$ + $b$ 検索テンプレートから $b$ 値を context = query clause で検索できます。

スコープ は、検索を実行する情報源を定義します。 検索対象には、開いているファイルや現在使用しているファイル、 ファイル ツールウィンドウ(Alt+2 )内のディレクトリ、最近変更されたファイル、その他の情報源が含まれます。 特定のディレクトリを検索するには、 Directory を選択し、 閲覧 ボタンを押してください。

ファイルタイプ は、検索するファイルのダイアレクトを定義します。

構造検索用の SQL テンプレートはどのように機能しますか
検索エンジンが検索テンプレートを処理する方法を見てみましょう。 検索フィールドに WHERE $a$ 検索テンプレートがあり、 context = query clause を設定していることを考慮してください。
DataGripは クエリの節 コンテキストテンプレートの定義を取得します。 クエリの節 コンテキストテンプレートの場合、定義は
SELECT id from dummy $pattern$です。 既存テンプレート メニュー項目に、既存のすべてのコンテキストテンプレートを表示できます。IDE は、
$pattern$変数を、検索テンプレートで定義した値に置き換えます。 この場合、WHERE $a$です。 置換結果は、SELECT id from dummy WHERE $a$のようになります。IDE は最終的な
選択ステートメントを解析し、構文ツリー内でWHERE $a$を検索します。WHERE $a$が見つかると、IDE はそれをエディターでハイライトします。
構造的に検索して置き換える
構造検索
をクリックしてください。
ファイルタイプ リストから、検索に使用する言語を選択します。
検索テンプレート フィールドに検索テンプレートを入力するか、既存のテンプレートを選択します。
ノード配下のテンプレートは選択しないでください。これらのテンプレートは言語の曖昧性を解消するために検索エンジン内部で使用されています。 保存された SQL テンプレートは ノード配下にあります。
モディファイヤパネルが非表示の場合は、 検索演算子パネルの切り替え ボタン (
) をクリックします。
各テンプレート変数をクリックして、検索修飾子を設定します。 修飾子を設定するには、 修飾子の追加 リンクをクリックします。
DataGripは、エディター内の該当コードを即座にハイライト表示します。
(SQL のみ)SQL コンテキストを追加します。
検索テンプレート フィールドで、キャレットをテンプレートの先頭に置き、 修飾子の追加 リンクをクリックします。 リストから コンテキスト を選択します。
(オプション) スコープ リストから、プロジェクト、モジュール、ディレクトリ、カスタムスコープ内で検索する場所を選択します。
(オプション) 検索ターゲット リストから、検索するテンプレートの部分を選択します: 個別の変数またはテンプレート全体(完全一致)。
検索 をクリックしてください。

構造置換
メインメニューで へ移動します。
検索テンプレート フィールドに検索テンプレートを入力するか、既存のテンプレートを選択します。
ノード配下のテンプレートは選択しないでください。これらのテンプレートは言語の曖昧性を解消するために検索エンジン内部で使用されています。 保存された SQL テンプレートは ノード配下にあります。
置換テンプレート フィールドに検索テンプレートを入力するか、既存のテンプレートを選択します。
置換テンプレート内の変数に修飾子を追加する必要がある場合は、変数にキャレットを置き、修飾子領域を使用して修飾子を管理します。
検索 をクリックしてください。 DataGripは、 検索 ツールウィンドウに結果を表示します。
検索 ツールウィンドウでは、結果をさらに操作して、見つかったアイテムを 1 つずつ置き換えたり、すべてを一度に置き換えたり、潜在的な変更をプレビューしたりできます。

検索テンプレートを使用した操作
構造検索用のテンプレートを保存する
をクリックしてください。
構造検索 ダイアログで、変数と修飾子を使用して検索パターンを追加します。
変数は、ドル記号で囲まれた一連の文字です (たとえば、
$tag$)。 テンプレート変数が持つ可能性のある値を指定するユーザー定義の制約 (修飾子) に式が適合する場合、テンプレート変数はソースコード式と一致します。 検索中にテンプレート変数にバインドされた式は、検索テンプレートまたは置換テンプレートで再度使用できます。テンプレートを保存… ボタン
をクリックし、 IDE またはプロジェクトにテンプレートを保存… を選択します。

検索テンプレートを共有する
構造検索 ダイアログ( )で、 新しい検索テンプレートを作成するか、既存のテンプレートを使用します。
テンプレートをエクスポートするには、 テンプレートをクリップボードにエクスポート ボタン (
) をクリックします。 DataGripはテンプレートの XML 表現をクリップボードに追加します(Ctrl+Shift+V を押すとクリップボードの内容が確認できます)。 この表現は、チャット、メール、フォーラムで他の開発者と共有できます。
テンプレートをインポートするには、任意の場所 (メール、チャット、フォーラム) から共有 XML コードをコピー (Ctrl+C) し、 構造検索 ダイアログで クリップボードからテンプレートをインポート ボタン (
) をクリックします。 DataGripは XML コード表現を受け取り、変数やスコープ(存在する場合)を含めてテンプレートに変換します。