JetBrains Rider 2024.1 ヘルプ

ソーステンプレート

従来、テンプレートまたはスニペットは、ソースコードの外部で保存および管理されていました。通常、テンプレートは汎用定型コードをすばやく作成するのに役立つため、これは理にかなっています。これらの目的のために、JetBrains Rider は多くの事前定義されたライブテンプレートサラウンドテンプレート、およびファイルテンプレートを提供します。これらのタイプの独自のテンプレートを作成することもできます。

ただし、現在のプロジェクトまたはソリューションにのみ関連する繰り返し可能なコードを生成したい場合があります。JetBrains Rider では、ソーステンプレートを使用してそのようなタスクを合理化することができます。

使い方

従来のテンプレートとは対照的に、ソーステンプレートは、拡張メソッドとしてプロジェクトのコードのどこにでも作成できます。プロジェクトの特定のタイプまたは標準タイプに対して定義できます。object の拡張メソッドとして作成することにより、すべてのタイプでソーステンプレートを使用できるようにすることもできます。

テンプレートが定義されるとすぐに、対応する型のオブジェクトとその継承のためにコード補完リストで利用可能になります。リストからテンプレートを選択すると、JetBrains Rider はテンプレートメソッドの本体から自分のコードにコードを挿入します。

以下に、ソーステンプレートの最も単純なアプリケーションを示す例を示します。テンプレート forEach は、すべてのジェネリクスコレクションで使用できます。これは、パラメーター this IEnumerable<T> x で定義されます。メソッド本体で指定されているように、コレクションを反復するコードを挿入します。プロジェクトの任意の静的クラスでテンプレートを定義できます。JetBrains Rider は、[SourceTemplate] 属性によってテンプレートとして識別します。

using JetBrains.Annotations; public static class MySourceTemplates { [SourceTemplate] public static void iterateCollection<T>(this IEnumerable<T> x) { foreach (var i in x) { // Do something useful here //$ $END$ } } }

このテンプレートをデプロイするために、任意のコレクションオブジェクトの自動補完を使用できるようになりました。

Source template in the completion list

テンプレート項目を選択すると、オブジェクトはテンプレートテキストに置き換えられます。

public void Test(IEnumerable<string> enumerable) { foreach (var i in enumerable) { // Do something useful here } }

テンプレート定義の //$ $END$ コメントは、テンプレートが適用された後のキャレット位置を定義する定義済みのテンプレートパラメーターにすぎないことに注意してください。テンプレートの他のパラメーターを使用して、テンプレートをより柔軟にすることができます。

ソーステンプレートを使用する理由

上記のように、ソーステンプレートは、現在のプロジェクトまたはソリューションで再利用するコードブロックに最も役立ちます。従来のテンプレートに比べて、ソーステンプレートの利点を示すいくつかの点があります。

  • ソーステンプレートを操作するために、どこかに切り替える必要はありません。すべてがエディターにあります。

  • テンプレートは厳密に型指定されているため、関連するオブジェクトに対してのみ呼び出すことができます。

  • テンプレート定義がコンパイルされている限り、テンプレートコードにエラーがないことを確認できます。

  • ソーステンプレートの作成および編集中は、インスペクション コード、ナビゲーション機能、コード補完など、好きな JetBrains Rider 機能を自由に使用できます。

ソーステンプレートを作成する

ソーステンプレートの定義については、新しいクラスを作成するか、拡張メソッドを保持する既存の静的クラスを使用できます。

テンプレートメソッドとその本体

ソーステンプレートはパブリック拡張メソッドであり、[SourceTemplate] 属性を持っている必要があります。この属性は、[NotNull][CanBeNull]、その他のコードアノテーション属性とともに、JetBrains.Annotations 名前空間で定義されます。ソーステンプレートメソッドを定義するには、プロジェクトでコードアノテーションを有効にする必要があります。

テンプレート本体では、好きなことをするコードを書くことができます。通常は、呼び出し元オブジェクトで何かを行いますが、必ずしもそうする必要はありません。

また、テンプレートメソッドでコンパイルされないコードを使用する必要があります。例: ローカル変数の名前を生成するために呼び出し側オブジェクト名を使用することができます。この場合、このコードを '$' 記号で始まる行またはブロックコメントの中に配置します。

[SourceTemplate] public static void Bar(this Entity entity) { /*$ var $entity$Id = entity.GetId(); DoSomething($entity$Id); */ }

ターゲット発現

ソーステンプレートが複雑な式を展開すると、デフォルトでは最新の部分のみがキャプチャーされます。式全体をキャプチャーする必要がある場合は、Target プロパティと SourceTemplateTargetExpression.Outer 値を使用してこれを明示的に指定する必要があります。以下の例では、Sqrt テンプレートが x+y 式全体に展開され、var sqrt = Math.Sqrt(x+y) になります。

JetBrains Rider: Source templates. SourceTemplateTargetExpression parameter

パラメーターとマクロ

ソーステンプレートでは、パラメーターマクロを使用できます。パラメーターに使用するマクロに応じて、パラメーターを指定および使用するいくつかの方法から選択できます。

  • テンプレートメソッドに新しいパラメーターを追加することで、テンプレートパラメーターを作成できます。デフォルトでは、編集可能なパラメーターとして動作します。つまり、テンプレートを適用すると、ホットスポットセッション中にフォーカスを受け取ります。このパラメーターのマクロを定義する場合は、次の例に示すように [Macro] 属性を追加する必要があります。

    • 属性の Expression プロパティは、使用するマクロを定義します。使用可能なテンプレートマクロの 1 つを指定できます。

    • Editable プロパティは、テンプレートが適用されたときにユーザーがパラメーターを編集できるかどうかをオプションで指定します。デフォルトでは、すべてのユーザー定義パラメーターは編集可能です。値 -1 は、パラメーターを編集不可にします。

      テンプレートで同じパラメーターが複数回使用されている場合、テンプレートが適用されたときに編集できるのは 1 回だけです。他の出現箇所は同期的に変更されます。必要に応じて、「編集可能」プロパティでゼロベースのインデックスを指定することにより、編集可能になる出現箇所を定義できます。

    [SourceTemplate] public static void newGuid(this object obj, [Macro(Expression = "guid()", Editable = -1)] string newguid) { Console.WriteLine(newguid); }
  • テンプレートメソッドのローカル変数をテンプレートパラメーターに変換できます。これを行うには、[Macro] 属性をテンプレートメソッド定義に追加し、Target プロパティで変数名を指定する必要があります。例:

    [SourceTemplate] [Macro(Target = "item", Expression = "suggestVariableName()")] public static void forEach<T>(this IEnumerable<T> collection) { foreach (var item in collection) { //$ $END$ } }
  • 他の JetBrains Rider テンプレートと同じように、事前定義されたパラメーターとすべてのユーザー定義パラメーターを使用して、パラメーター ID を 2 つの $ 記号 $param_name$ でラップできます。

    文字列リテラル内にユーザ定義のテンプレートパラメーターを使用することができます(例:

    Console.WriteLine("A random GUID: $newguid$");

    文字列リテラルの外部でテンプレートパラメーターを使用するには、$ 記号で始まる特別なテンプレートコメントに配置する必要があります: //$ $param_name$ または /*$ $param_name$ */ 例:

    [SourceTemplate] [Macro(Target = "newguid", Expression = "guid()", Editable = -1)] public static void newGuid(this object obj) { //$ var guid = "$newguid$"; Console.WriteLine("A random GUID: $newguid$"); }

    呼び出し元オブジェクト、およびメソッドパラメーターとローカル変数として作成されたテンプレートパラメーターは、特別なテンプレートコメント内の $ 記号の有無にかかわらず使用できます。

ソーステンプレートを適用する

ソーステンプレートを適用するには、まずテンプレートがスコープ内にあることを確認してください。つまり、同じ名前空間にいるか、テンプレートの名前空間が明示的にインポートされています。

ソーステンプレートからコードフラグメントを作成する

  1. テンプレートをデプロイする場所にキャレットを置きます。

  2. テンプレートをデプロイするオブジェクトを入力し、ドットを入力して、テンプレートの名前またはその CamelHumps 省略形の入力を開始します。

  3. 補完リストでテンプレートを選択してクリックするか、Enter を押します。

  4. 呼び出し元オブジェクト、ドット、入力したテンプレート名の一部は、テンプレート本体に置き換えられます。

  5. テンプレートに編集可能なパラメーターがある場合(つまり、ユーザー入力が必要な場合)、JetBrains Rider はエディターにホットスポットセッションをデプロイし、最初のパラメーターに入力位置を設定します。次に下記のことを実行できます。

    • JetBrains Rider が現在のパラメーターにいくつかの値を提案している場合は、UpDown の矢印キーを使用して推奨値のリストを移動するか、目的の値を入力してください。

    • Tab または Enter を押して値を受け入れ、次のパラメーターの入力位置に移動します。これが最後のパラメーターである場合、ホットスポットセッションは完了し、キャレットはセッション用に定義された終了位置に移動します。

    • Shift+Tab を押すと、入力フォーカスが前のパラメーターの入力位置に移動します。

    • Esc を押してホットスポットセッションを終了します。この場合、すべてのセッションパラメーターはデフォルト値で初期化されます。

関連ページ:

Web 固有のテンプレート

このセクションには、HTML、JavaScript、TypeScript などの Web アプリケーションコードの作成に使用できる Web 固有のコードテンプレートのドキュメントが含まれています。Web 固有のライブテンプレートライブテンプレートを作成する、ライブテンプレート変数、ライブテンプレートを共有する、Emmet、Web 固有のファイルテンプレートファイルテンプレート変数、テンプレート内の再利用可能なコンテンツ、ファイルテンプレートを共有する、...

ライブテンプレートを使用してソースコードを作成する

JetBrains Rider は、サポートされているすべての言語用に事前定義されたライブテンプレートを豊富に提供します。事前定義テンプレートのリストには、コレクションの反復、アサーションメソッドの記述、新しい配列の作成、値の出力、LINQ クエリのコーディング、自動プロパティの生成などのテンプレートが含まれています。ライブテンプレートを使用してコードフラグメントを作成するエディターで、ライブテンプレートからコードフラグメントを挿入する場所にキャレットを置きます。テンプレートのショートカットまた...

コードフラグメントをテンプレートで囲む

サラウンドテンプレートは、式、単一のステートメント、または任意のコードブロックを、またはその他のコード構造ですばやく囲むために使用されます。テンプレートが拡張されると、JetBrains Rider はコードをインテリジェントに再フォーマットし、選択を調整し、最後にキャレットを再配置して、便利な位置から入力を続行できるようにします。JetBrains Rider は、サポートされているすべての言語で多数のサラウンドテンプレートをすぐに使用できますが、特定のケースに合わせてサラウンドテンプレートを...

自動補完

JetBrains Rider の自動補完は、クラス、メソッド、変数、キーワード、以前にインポートされた拡張メソッドを含む現在の可視性スコープ内で使用可能なその他のシンボルの名前を提案します。ライブテンプレート、コード生成の提案、単体テストのカテゴリなど、他の多くのコンテキスト固有の提案も補完リストで利用できます。デフォルトでは、自動補完の提案には第 2 基本補完のアイテムも含まれます。デフォルトの動作を変更する場合は、JetBrains Rider 設定のページにある対応するコントロールを使...

設計時にコードの問題を分析する

JetBrains Rider は、エディターでコードファイルを開くとすぐに、コードファイルが閉じられるまで分析を開始します。検出されたすべてのコードの問題は、重大度に応じてエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のエラーストライプにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:デザイン時のインスペクション機能は、Rider エディターの基本機能への主要...

ソースコードのアノテーション

JetBrains Rider のコードアノテーションの恩恵を受ける最も簡単な方法は、ソースコードのシンボルにアノテーション属性を追加して、JetBrains Rider があなたのソリューションをより正確かつ正確に分析できるようにすることです。デフォルトでは、すべてのアノテーション属性クラスは属性でマークされているため、コンパイラーはコード内の属性の使用を無視します。つまり、'JetBrains.Annotations.dll' アセンブリへのバイナリ参照は生成されません。ただし、プロジェクト...