構造検索
構造検索は、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 レポートのカテゴリで確認できます。

関連ページ:
構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。正規表現を使用している場合でも、IntelliJ IDEA はコードを正規表現として扱います。構造検索および置換(SSR)アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。IntelliJ IDEA は、作成した検索テンプレートと適用した条件に基づいて、ソースコードのフラグメントを見つけて置き換えます。ターゲットを構造的に検索するメインメニューでに移動して、構造...
検索テンプレート、修飾子、スクリプトの制約
構造検索用のテンプレートを作成するときは、基本的にスクリプトを作成します。スクリプト作成プロセスを簡素化するために、IntelliJ IDEA は、検索テンプレートのプロトタイプとして使用できる事前定義された検索テンプレートのリストを提供します。既存の検索と置換テンプレートのリストにアクセスする方法については、構造的な検索と置換のセクションを参照してください。各検索または置換テンプレートは、条件 (修飾子) を追加して検索結果を絞り込むことができる変数で構成されます。修飾子は、検索テンプレートの...
構造検索と置換の操作
構造検索と置換は、コードの特定のパターンを検索し、検索を絞り込む修飾子を追加できる強力なツールです。このチュートリアルでは、フィールド宣言を検索し、修飾子を追加し、変更されたテンプレートに基づいてコードインスペクションを作成します。必要に応じて、詳細に入る前に関連するビデオを見ることができます。ビデオは、以前のバージョンの IntelliJ IDEA 用に作成されたものであるため、若干異なる場合があります。構造検索ダイアログを開き、既存のテンプレートの 1 つを検索に使用します。既存のテンプレー...
インスペクションプロファイル
インスペクションプロファイルには、有効なインスペクション、これらのインスペクションが分析するファイルの範囲、およびインスペクションの重大度設定に関する情報が保持されます。IntelliJ IDEA には、次の 2 種類のプロファイルがあります。グローバルですべてのプロジェクト (IDE レベル) で使用できるプロファイル IDE に保管。1 つのプロジェクト (プロジェクトレベル) でのみ使用可能なプロファイルプロジェクトに保管。レベル間でプロファイルを移動する詳細を参照してください。Intell...
プラグイン
JetBrains マーケットプレイスなどのリポジトリの既存のプラグインを使用するか、カスタムプラグインを使用して Qodana を拡張できます。JetBrains マーケットプレイスのプラグイン:JetBrains マーケットプレイスからプラグインをインストールして実行するには、ファイルでオプションを指定します。plugins: - id: <plugin.id> ここで、は JetBrains マーケットプレイスのプラグイン ID を表します。特定のプラグインの ID を確認するに...