構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、IntelliJ IDEA はコードを正規表現として扱います。構造検索および置換(SSR)アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。
IntelliJ IDEA は、作成した検索テンプレートと適用した条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。
ターゲットを構造的に検索する
メインメニューでに移動して、構造検索ダイアログを開きます。
構造置換ダイアログにすばやく切り替えるには、
をクリックします。
構造検索ダイアログで、次のいずれかの操作を行います。
テンプレートを最初から作成します。テンプレートのリストから下書きテンプレートを選択し、エディター領域にコードテンプレート (たとえば、コードを表す
$variable$) を入力します。カスタムテンプレートを将来使用するために保存するには、ダイアログツールバーの「テンプレートの保存」アイコン(
)をクリックします。テンプレートをインスペクションとして保存することもできます。

IntelliJ IDEA は、作成したテンプレートをテンプレートリストの最近ノードに追加します。
既存のテンプレートの 1 つをプロトタイプとして使用します。使用可能な既存のテンプレートのリストから必要なテンプレートを選択します。
例: コードに次のフィールドがあります。
public class MainActivity { public static final String this_is_wrong = "Hello"; public static final String THIS_IS_CORRECT = "world"; }クラスで特定のフィールドを見つけましょう。
既存のテンプレートのリストから、Java をクリックし、クラスベースノードを開きます (クラスにフィールドが必要であるため)。これにより、クラステンプレートのフィールドがターゲットになります。

プロジェクト全体でこれらの構造を検索するには、検索をクリックします。
IntelliJ IDEA はエディターで見つかったコードの出現箇所を即座にハイライトします。
構造検索ダイアログには、選択したテンプレートとそのフィルターの値が表示されます。既存のフィルターを編集したり、正規表現やスクリプト制約などの新しい条件を追加したりできます。コード変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。

この例では、
$Field$変数にテキスト修飾子を追加します。テキスト修飾子の場合は、次の正規表現を入力します。
\b[A-Z].*?\b
この場合、構造検索ダイアログで大 / 小文字を区別するチェックボックスを選択すると、IntelliJ IDEA は最初のフィールドに大文字が含まれるフィールドのみを検索します。
選択した言語に応じて、追加のオプションも利用できます。
例: 次のオプションを確認します。
言語 : リストを使用して、検索に含めるファイルの種類を選択します。この場合は Java です。
ターゲット : リストを使って検索する項目を選択します。この場合は
Fieldです。
再帰 : 選択すると、IntelliJ IDEA は再帰検索を実行し、ネストされたすべての項目が結果に含まれます。例: 再帰を有効にしてメソッド呼び出しを検索すると、IntelliJ IDEA は
foo(foo(foo()))内のネストされた呼び出しを検索します。再帰を無効にすると、外側の呼び出しのみが検索されます。挿入されたコード : 選択すると、HTML 内の JavaScript や Java 内の SQL などの挿入されたコードも検索に含まれます。
大 / 小文字を区別する : 選択すると、検索結果は検索対象の大文字と小文字を一致させます。
検索範囲(プロジェクト、モジュール、ディレクトリ、カスタムスコープ)を指定します。
検索をクリックします。
IntelliJ IDEA は、検索ツールウィンドウに結果を表示します。

新しい検索テンプレートインスペクションを構造検索にカスタムテンプレートとして追加できます。これを行うには、検索ツールウィンドウでテンプレートからインスペクションを作成をクリックします。その後、このテンプレートを再利用してコードをインスペクションできます。
ターゲットを構造的に置き換える
メインメニューで、に移動します。
構造置換ダイアログで、新規または既存のテンプレートを検索に追加し、テンプレート領域を置き換えます。置換テンプレートは、検索テンプレートと同じ方法で保存できます。
置換テンプレート内の変数にフィルターを追加する必要がある場合は、対象の変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。
フィルター領域では、あなたのように選択した内容に応じて、フィルター条件を指定してください。
例: 検索した変数
$Field$を取得し、見つかったテンプレートを小文字に置き換える条件を追加しましょう。変数
$Field2$を呼び出して、基本的に Groovy スクリプトである次のフィルタースクリプトを追加してみましょう:Field.name.toLowerCase()
置換結果を絞り込むには、次のオプションを選択します。
完全修飾名を短縮する - 完全修飾クラス名を短縮名およびインポートに置き換えます。
再フォーマット - 置き換えられたコードを自動的にフォーマットします。
静的インポートを使用する - 可能であれば、静的インポートを代わりに使用します。例: このオプションが選択されている場合、静的メソッド
Math.abs(i)へのメソッド呼び出しはabs(i)になります。
必要なオプションを指定したら、検索をクリックします。IntelliJ IDEA は検索ツールウィンドウに結果を表示します。
検索ツールウィンドウでは、結果をさらに操作して、見つかったアイテムを 1 つずつ、または一度にすべて置き換えたり、潜在的な変更をプレビューしたりできます。
置換テンプレートを構造検索インスペクションに追加して、コードのクイックフィックスとして使用することもできます。

置換の結果、大文字が小文字に切り替わりました。

検索テンプレートを共有する
エクスポートまたはインポートすることで、検索テンプレートを同僚と共有できます。
構造検索ダイアログ()で、新しい検索テンプレートを作成するか、既存のテンプレートを使用します。
テンプレートをエクスポートするには、
をクリックします。IntelliJ IDEA は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには、Ctrl+Shift+V を押します)。この表現は、チャット、メール、フォーラムで他の開発者と共有できます。
テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C)し、構造検索ダイアログで
をクリックします。IntelliJ IDEA は、XML コード表現を取得し、変数とスコープが存在する場合はそれを含むテンプレートに変換します。
関連ページ:
検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、IntelliJ IDEA は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数で構成されます。修飾子は、検索テンプレートの...
カスタムインスペクションを作成する
カスタムインスペクションを作成するには、検索を構成してテンプレートを置き換える必要があります。IDE はテンプレートに一致するコードを検索し、それをエディターでハイライトします。設定ダイアログで、に移動します。を押してインスペクションの構成を選択することもできます。新しいインスペクションを作成するプロファイルを選択します。ツールバーでカスタムインスペクションの追加ボタン () をクリックし、インスペクションでコードのみをハイライトする場合は構造検索インスペクションの追加…を選択します。または、イ...
使用箇所の検索
コードを記述または編集するときに、変更または削除するコード要素に遭遇する場合があります。変更を行う前に、コード要素がどこで使用され、アプリケーションにどのように影響するかを確認することをお勧めします。使用箇所の検索アクションを使用すると、コードベース全体でコード要素の参照を検索できます。検索プロセスを管理し、単一のファイルのみを検索したり、検索範囲をプロジェクト全体に拡張したり、特定の検索範囲を作成したりできます。さらに、使用箇所のハイライトの色を設定したり、使用箇所の自動ハイライトを完全に無効...