構造検索
構造検索は、JetBrains IDE に組み込まれた強力で柔軟なメカニズムです。検索テンプレートを使用して、セマンティクスを考慮してコードベースをインスペクションできるようにします。独自の検索テンプレートを作成し、Qodana インスペクションとして使用できます。
使い方
例として、次の検索テンプレートを考えてみましょう。
これにより、System.out.println()
Java ステートメントを検出できます。System.out.println("Hardcoded text!")
のようなハードコードされたテキストを含むステートメントを検出するには、テンプレートで以下に説明する修飾子を受け取る必要があります。
変数 | 値 | 説明 |
---|---|---|
$Instance$ | [0,1] | 0 または 1 つの値を受け入れます。 |
$MethodCall$ | text=println | println メソッドを検索しています。 |
$Parameter$ | text=^\".*\" $ | 引用符で囲まれた任意のテキスト。 |
この手順では、Qodana を使用してコードベースをインスペクションするためにこの検索テンプレートを使用する方法を説明します。
IntelliJ IDEA の
ダイアログを使用して、テンプレートを作成します。IntelliJ IDEA ドキュメントポータルの構造検索を使用して置換するページの説明に従って、テンプレートをインスペクションに変換します。例:
Hardcoded-print
として保存できます。プロファイルを構成するページを参照してください。
を使用して、インスペクションの グループ内のインスペクションを有効にします。詳しくはダイアログの セクションで、更新されたプロファイルをエクスポートします。
プロジェクトのルートディレクトリに
qodana.yaml
ファイルを作成し、そのファイル内のプロファイルの場所へのパスを指定します。profile: path: path/to/the/profile/fileQodana を使用してコードをインスペクションします。
docker run \ -v <project-directory>:/data/project/ \ -e QODANA_TOKEN="<cloud-project-token>" \ jetbrains/qodana-jvm構造検索インスペクションによって検出された問題は、Qodana レポートの
カテゴリで確認できます。
関連ページ:
![](https://resources.jetbrains.com/help/img/idea/2024.1/structural_search_dialog.png)
構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、IntelliJ IDEA はコードを正規表現として扱います。構造検索および置換(SSR)アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。IntelliJ IDEA は、作成した検索テンプレートと適用した条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。ターゲットを構造的に検索するに移動して、構造検索ダイアログを...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ssr_list_of_templates.png)
検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、IntelliJ IDEA は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数で構成されます。修飾子は、検索テンプレートの...
![](https://resources.jetbrains.com/help/img/idea/2024.1/all_fields_of_a_class.png)
構造検索を使用して置換する
構造検索と置換は、コードの特定のパターンを検索し、検索を絞り込む修飾子を追加できる強力なツールです。このチュートリアルでは、フィールド宣言を検索し、修飾子を追加し、変更されたテンプレートに基づいてコードインスペクションを作成します。必要に応じて、詳細に入る前に関連するビデオを見ることができます。ビデオは、以前のバージョンの IntelliJ IDEA 用に作成されたものであるため、若干異なる場合があります。構造検索ダイアログを開き、既存のテンプレートの 1 つを検索に使用します。既存のテンプレー...
![](https://resources.jetbrains.com/help/img/idea/2024.1/ij_inspections_new_profile.png)
プロファイルを構成する
インスペクションプロファイルは、有効なインスペクション、これらのインスペクションが分析するファイルのスコープ、およびインスペクション重大度設定に関する情報を保持します。IntelliJ IDEA には、2 種類のプロファイルがあります。プロファイル IDE に保管は、IntelliJ IDEA 構成ディレクトリの inspection フォルダーに保存され、すべてのプロジェクトで使用できます。プロジェクトにコピーオプションを使用して、IDE プロファイルを現在のプロジェクトにコピーできます。プロファイル...
![](https://pleiades.io/icons/jetbrains_logo.png)
プラグイン
リポジトリの既存のプラグインを使用するか、独自のプラグインを開発することで、Qodana を拡張できます。リポジトリからのプラグイン:このセクションでは、ペソインスペクション (EA 拡張) プラグインで強化された PHP 用の Qodana リンターを使用して PHP コードをインスペクションする方法について説明します。JetBrains マーケットプレイスまたは任意のカスタムリポジトリの関連する IDE プラグインに対してこれらの手順を繰り返すことができます。プラグインをインストールして設定する...