構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、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 コード表現を取得し、変数とスコープが存在する場合はそれを含むテンプレートに変換します。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.3/ssr_list_of_templates.png)
検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、IntelliJ IDEA は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数で構成されます。修飾子は、検索テンプレートの...
![](https://resources.jetbrains.com/help/img/idea/2024.3/add-ssr-template.png)
カスタムインスペクションを作成する
カスタムインスペクションを作成するには、検索を構成してテンプレートを置き換える必要があります。IDE はテンプレートに一致するコードを検索し、それをエディターでハイライトします。設定ダイアログで、に移動します。を押してインスペクションの構成を選択することもできます。新しいインスペクションを作成するプロファイルを選択します。ツールバーでカスタムインスペクションの追加ボタン () をクリックし、インスペクションでコードのみをハイライトする場合は構造検索インスペクションの追加…を選択します。または、イ...
![](https://resources.jetbrains.com/help/img/idea/2024.3/find_usages_in_file.png)
使用箇所の検索
コードを記述または編集するときに、変更または削除するコード要素に遭遇する場合があります。変更を行う前に、コード要素がどこで使用され、アプリケーションにどのように影響するかを確認することをお勧めします。使用箇所の検索アクションを使用すると、コードベース全体でコード要素の参照を検索できます。検索プロセスを管理し、単一のファイルのみを検索したり、検索範囲をプロジェクト全体に拡張したり、特定の検索範囲を作成したりできます。さらに、使用箇所のハイライトの色を設定したり、使用箇所の自動ハイライトを完全に無効...