GitHub Copilot チャット モードを使用してコードをリファクタリングする
GitHub Copilotを使用して、コードベース内のコードをリファクタリングできます。 チャット ビュー エージェントを使用して、コード リファクタリング タスクを分析、計画、実装できます。 チャット ビュー エージェントは、チャットの会話を管理し、GitHub Copilotの機能にアクセスするためのユーザー フレンドリなインターフェイスを提供します。 チャット ビューには、次の組み込みエージェントが含まれています。
- 質問: Ask を使用して、コードベースまたはテクノロジの概念について質問します。 Ask を使用して、コードの説明、リビジョンや修正プログラムの提案、コードベースに関連する情報の提供を行うことができます。
- プラン: Plan エージェントを使用して、コードを記述する前に、構造化されたステップ バイ ステップの実装計画を作成します。 プランが正しく表示されたら、実装エージェントに渡して実行します。
- エージェント: エージェントを使用して、エージェントコーディングワークフローを開始します。 エージェントを使用して、コマンドの実行、コードの実行、ワークスペース内の他のタスクの実行を行うことができます。
Von Bedeutung
エージェントを使用する場合、GitHub Copilotは 1 つのタスクを完了するために複数の Premium 要求を行う場合があります。 プレミアムリクエストは、ユーザーが開始したプロンプトと、GitHub Copilot がユーザーに代わって実行するフォローアップ アクションによって使用できます。 使用される Premium 要求の合計数は、タスクの複雑さ、関連するステップの数、選択したモデルによって異なります。
Ask を使用してコードをリファクタリングする
Ask を使用すると、タスクのコーディングに関するヘルプを取得したり、複雑な概念を理解したり、コードを改善したりできます。 Ask は、GitHub Copilot チャットを使用した対話型の会話用に設計されています。 質問、説明の取得、提案の要求をリアルタイムで行うことができます。
チャット ビューを開き、[確認] を選択します。
チャットにコンテキストを追加します。
Ask では、チャット参加者、スラッシュ コマンド、チャット変数がサポートされます。
@workspaceチャット参加者または#codebaseをチャットに追加して、ファイルやフォルダーと共にコンテキストを提供できます。リファクタリングするコードと行う変更を理解するのに役立つ質問をします。
たとえば、GitHub Copilot に依頼して、既存の認証コードを理解し、OAuth を使って現在のメソッドを更新する方法を教えてもらうことがあります。
実装する更新プログラムを説明するプロンプトを作成します。
プロンプトには、実装するコード機能の説明が含まれている必要があります。 例えば次が挙げられます。
@workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.チャット ビューで推奨されるコードを確認します。
チャット ビューに表示される応答には、機能の実装に使用できるコード スニペットが含まれます。 更新されたプロンプトを入力して、コードを絞り込んだり、詳細を確認したりできます。
推奨されるコードを実装するには、コード スニペットの上にマウス ポインターを置き、[ 適用]、[ 挿入]、および [コピー ] オプションを選択します。
- 適用: エディターの現在のファイルにコード候補を適用します。
- 挿入: エディターの現在のカーソル位置にコード候補を挿入します。
- コピー: コード候補をクリップボードにコピーします。
リファクタリングされたコードをテストして、エラーなしで実行され、期待される結果が生成されることを確認します。
Plan を使用してコードをリファクタリングする
プラン エージェントは、変更を加える前に、構造化されたステップ バイ ステップの実装計画を作成する場合に使用できます。 Plan エージェントは、コードベースを分析し、明確な質問を行い、詳細な計画を作成します。 プランが正しく表示されたら、実装エージェントに渡して実行できます。
ヒント
変更を開始する前に、Ask を使用してリファクタリングに関心のあるコードを評価し、オプションを評価します。 Plan を使用して構造化されたプランを作成し、それを実装エージェントに渡すことができます。
チャット ビューを開き、[プラン] を選択します。
チャットにコンテキストを追加します。
#codebaseを使用し、チャットにファイルを追加して、ワークスペース コンテキストを指定します。実装するコード機能を説明するプロンプトを作成します。
プロンプトには、実装するコード機能の説明が含まれている必要があります。 例えば次が挙げられます。
#codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.GitHub Copilotによって生成された構造化実装計画を確認します。
Plan エージェントは、コードの変更が行われる前に確認できるステップ バイ ステッププランを作成します。
プランが正しく表示されたら、実装エージェントに渡して実行します。
プランをエージェントに渡して、コードベースに変更を適用できます。
コード エディターで、推奨される編集内容を確認します。
推奨される編集内容を受け入れるか破棄します。
上下の矢印を使用して、編集内容間を移動できます。 各編集に表示されるポップアップ メニューを使用して、推奨される編集を個別に保持 (承諾) または元に戻す (破棄) できます。 エディター タブ (またはチャット ビュー) の下部にある [保持 ] ボタンと [元に戻す ] ボタンを使用して、すべての編集を一度に承諾または拒否することもできます。
リファクタリングされたコードをテストして、エラーなしで実行され、期待される結果が生成されることを確認します。
エージェントを使用してコードをリファクタリングする
コードのリファクタリング プロセスを自動化する場合は、エージェントを使用できます。 エージェントは、ユーザーに代わってアクションを実行できる自律エージェントとして機能します。 特定のタスクを実行するようにGitHub Copilotに依頼すると、要求に基づいてコードが生成されます。
エージェントを使用すると、自然言語を用いて高レベルのタスクを指定し、GitHub Copilotが自律的にリクエストを検討し、必要な作業を計画してコードベースに変更を適用することができます。 エージェントは、コード編集とツール呼び出しの組み合わせを使用して、指定したタスクを実行します。 要求を処理する際に、編集の結果とツールによる処理が監視され、発生した問題が解決されるよう繰り返し調整が行われます。
Von Bedeutung
エージェントを使用する場合、GitHub Copilotは 1 つのタスクを完了するために複数の Premium 要求を行う場合があります。 プレミアムリクエストは、ユーザーが開始したプロンプトと、GitHub Copilot がユーザーに代わって実行するフォローアップ アクションによって使用できます。 使用される Premium 要求の合計数は、タスクの複雑さ、関連するステップの数、選択したモデルによって異なります。
チャット ビューを開き、[エージェント] を選択します。
GitHub Copilotが実行するタスクを説明するプロンプトを作成します。
2 つ以上のプロセス/手法を使用して同じタスクを実行するコード プロジェクトがあるとします。 一貫性、保守容易性、パフォーマンスを向上させるために、1 つのアプローチを使用してコードをリファクタリングするようにGitHub Copilotに依頼できます。
例えば次が挙げられます。
Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.エージェントは、さまざまなタスクを実行するために複数のツールを呼び出す場合があります。 必要に応じて、[ツール] アイコンを選択して、要求への応答に使用できるツールを構成します。
ツールの呼び出しとターミナル コマンドを確認します。
GitHub Copilotターミナル コマンドまたは組み込まれていないツールを実行する前に、続行の確認を要求します。 ツールはコンピューター上でローカルに実行され、ファイルまたはデータを変更するアクションを実行する可能性があるため、確認が必要です。
GitHub Copilotは、コード編集およびターミナル コマンドの問題と問題を検出し、それらを解決するためのアクションを繰り返し実行します。
Von Bedeutung
GitHub Copilotは自己修復が可能ですが、常に問題を単独で解決できるとは限りません。 プロセスを一時停止し、GitHub Copilotが問題を理解するのに役立つように、より多くのコンテキストを提供できます。 プロセスを取り消して、新しいプロンプトからやり直すこともできます。
推奨される編集内容を確認し、提案された編集内容を承諾または破棄します。
リファクタリングされたコードをテストして、期待される結果が生成されることを確認します。
エージェントは単独で問題を解決する必要がありますが、コードをテストして期待どおりに動作することを確認する必要があります。
チャット ビューの [元に戻す ] ボタンを使用して、エージェントによって行われた編集を元に戻すことができます。 エディターの [元に戻す ] オプションを使用して、エージェントによって行われた変更を元に戻すこともできます。
プランよりもエージェントを選択するタイミング
プランとエージェントのいずれかを選択するには、次の条件を検討してください。
- 計画: 計画は、コードを記述する前に、構造化されたステップ バイ ステップの実装計画を作成します。 エージェントは、編集する関連するコンテキストとファイルを自律的に決定し、変更を直接開始します。
- タスクの複雑さ: エージェントは、コードの編集とツールまたはターミナル コマンドの呼び出しの両方を必要とする複雑なタスクに適しています。
- 期間: エージェントは複数のステップを使用して要求を処理するため、応答の生成に時間がかかる場合があります。 たとえば、編集する関連するコンテキストとファイルを決定するには、アクションの計画などを決定します。
- 自己復旧: エージェントは生成された編集の結果を評価し、中間の問題を解決するために複数回繰り返し処理する場合があります。
- 要求クォータ: エージェント モードを使用している場合、タスクの複雑さに応じて、1 つのプロンプトでバックエンドへの要求が多数発生する可能性があります。
概要
GitHub Copilotを使用して、コードベース内のコードをリファクタリングできます。 チャット ビュー エージェントを使用して、コード リファクタリング タスクを分析、計画、実装できます。 チャット ビューには、Ask、Plan、Agent の 3 つの組み込みエージェントが含まれています。 Ask を使用して、コードベースまたはテクノロジの概念について質問できます。 Plan を使用して、コードを記述する前に構造化実装計画を作成できます。 エージェントを使用して、エージェントコーディングワークフローを開始できます。