PyCharm 2026.3 Help

言語インジェクション設定ダイアログ: 汎用 Python

このダイアログを使用して、Python 文字列リテラルに言語をインジェクトするインジェクションルールを構成します。

言語インジェクション 設定ページで 追加ボタン追加 をクリックして 汎用 Python を選択した場合、またはリストで Python インジェクションを選択して 編集ボタン編集 をクリックした場合に、ダイアログが開きます。

項目

説明

名前

注入の名前。

言語

インジェクトする言語。

  • ID: インジェクトする言語の ID または名前を選択します。

  • 接頭辞: 対応する文字列値の前に追加する文字のシーケンスを指定します。

  • 接尾辞: 対応する文字列値の後に追加する文字のシーケンスを指定します。

接頭辞と接尾辞はオプションです。

配置パターン

このフィールドに、PyCharm がリテラルをインジェクションとして認識するコンテキストを定義するルールを入力します。

psiElement() や string() などのプラットフォームパターンに加えて、次の Python 固有のパターンを使用できます:

  • pyLiteralExpression(): 文字列リテラルなどのリテラル式に一致します。

  • pyStringLiteralMatches("regexp"): 値に指定された正規表現と一致するものが含まれる文字列リテラルに一致します。 一致では大文字と小文字が区別されず、 . は改行にも一致します。 Docstring と 10,000 文字以上の文字列リテラルは照合されません。

  • pyArgument("function_name", index): 指定された名前の関数またはメソッドへの呼び出しの引数に一致します。 index は引数のゼロベースの位置です。 PyCharm は関数名を呼び出し内の名前と比較し、関数を解決しません。

  • pyModuleFunctionArgument("function_name", index, "module_name"): 指定されたモジュールのトップレベルで定義されている関数への呼び出しの引数に一致します。 module_name は、モジュールの修飾名ではなく、拡張子を除いたモジュールファイルの名前です。 たとえば、 mypkg/db_utils.py の場合は db_utils を指定します。

  • pyMethodArgument("method_name", index, "class_qualified_name"): 指定された修飾名を持つクラスで定義されているメソッドへの呼び出しの引数に一致します。 継承されたメソッドの場合は、それを定義しているクラスを指定します。 PyCharm はオブジェクトの推論される型によって呼び出しを解決するため、不明な型のオブジェクトに対する呼び出しは一致しません。

pyArgument()、 pyModuleFunctionArgument()、 pyMethodArgument() パターンは、 execute(sql="...") などのキーワード引数には一致しません。

条件を組み合わせるには、 .and() を使用します。

例:

SELECT で始まる文字列リテラルに言語をインジェクトします:

pyStringLiteralMatches("^\\s*SELECT\\s")

execute という名前の関数またはメソッドへの任意の呼び出しの最初の引数に言語をインジェクトします:

pyLiteralExpression().and(pyArgument("execute", 0))

db_utils.py で定義されている run_query() 関数の最初の引数に言語をインジェクトします:

pyModuleFunctionArgument("run_query", 0, "db_utils")

myapp/db.py で定義されている リポジトリ クラスの query() メソッドの最初の引数に言語をインジェクトします:

pyMethodArgument("query", 0, "myapp.db.Repository")

複数パターン

1 つのインジェクションルールに複数の場所パターンを定義できます。 いずれかのパターンが一致すると、インジェクションが有効になります(OR ロジックで結合されます)。 各パターンを別の行に追加してください。

拡張生 advanced

この領域では、必要に応じて追加設定を指定することで、インジェクションルールが適用されるコンテキストを絞り込み、インジェクションプロセスをよりきめ細かく制御できるようになります。

  • 値パターン 言語をインジェクションするコンテキストを決定する正規表現を入力します。 パターンの最初のキャプチャーグループを挿入対象として使用することで、特定のパターンに一致する値、パターンに一致する複数の部分にのみ言語を挿入するように手順を構成できます。

  • 単一ファイル - このオプションがオフの場合、値のパターンに一致するフラグメントは、たとえばフラグメントエディターの観点から、別々の「ファイル」として別々に扱われます。

    このオプションがオンの場合、対応するフラグメントはすべてマージされて単一のユニット、つまり「ファイル」になります。

    値のパターンを考える

    xxx (.+) yyy (.+) zzz

    そしてフラグメント

    xxx select * yyy from family zzz,

    このオプションがオフの場合、 select * と from family は 2 つの独立したフラグメント(または「ファイル」)として扱われます。 このオプションがオンの場合、 select * from family は単一のユニットまたは「ファイル」として扱われます。

2026 年 10 月 30 日