C++ 向け GitHub Copilot モダナイゼーションのトラブルシューティング

この記事は、GitHub Copilotモダン化を使用して C++ プロジェクトをアップグレードする場合の一般的な問題を解決するのに役立ちます。 ここで説明していない問題が発生した場合は、Help>Send Feedback>Visual Studioで問題を報告を使用します。

開始する前に

ソリューションまたはプロジェクトがビルドされていることを確認する

MSVC アップグレード シナリオの場合、エージェントはソリューションまたはプロジェクトをビルドして変更を検証します。 開始する前にソリューションまたはプロジェクトが既に破損している場合、エージェントは既存の問題とアップグレードによって発生した問題を区別するのが難しくなります。

ビルドの問題がわかっている場合は、 カスタム手順で文書化し、評価段階でエージェントがコンテキストを要求したときに応答で提供するか、エージェントが無視することを認識できるように scenario-instructions.md に追加します。

コミットされていない作業をコミットまたは隠す

クリーンな作業ディレクトリから始めます。 エージェントの動作に合わせてコミットが行われ、コミットされていない変更とエージェントの変更が混在すると、変更の確認や元に戻すのが困難になります。

git stash
git status

Git 以外のリポジトリをバックアップする

エージェントは、ソース管理下にないフォルダーを操作することもできます。 プロジェクトが Git リポジトリにない場合、エージェントは分岐操作とコミット操作をスキップします。 必要に応じて復元できるように、開始する前にプロジェクト フォルダーをバックアップします。

Tip

リモートにプッシュしない場合でも、開始する前にローカル Git リポジトリを初期化することを検討してください。 これにより、個々の変更をロールバックし、進行状況を段階的に追跡できます。

Example:

git init
git add
git commit -m "Initial Commit"

自分とエージェントが完了したら、git を引き続き使用したくない場合は、作業ツリー内の現在のコードが必要であることを確認し、.gitを実行したディレクトリ内のgit init ディレクトリを削除します。

一般的な問題

エージェントがCopilot Chatに表示されない

Symptoms: GitHub Copilot チャット ウィンドウに「@Modernize」と入力しても、エージェントはアクティブ化されず、Modernizeソリューション エクスプローラー コンテキスト メニューに表示されません。

解決策:

  1. Help>About Microsoft Visual Studio でVisual Studioがバージョン 18.7 以降であることを確認します。
  2. ステータス バーのCopilot アイコンを確認して、GitHub Copilotがアクティブであることを確認します。
  3. Tools>Options>GitHub>Copilot>C/C++ で、この機能が有効になっていることを確認してください。 次に、GitHub Copilot による C++ 向けモダナイゼーションを有効にする を選択します。
  4. 設定を変更した後、Visual Studioを再起動します。

エージェントがループにはまる

症状: エージェントは、進展がないまま同じ修正を何度も試みます。

解決策:

  • Copilot Chat プロンプト ウィンドウで [キャンセル] ボタンを使用してエージェントを停止し、プロンプトで監視している内容を説明し、エージェントを再開するためのプロンプトを送信します。
  • 手動修正を行い、変更内容をエージェントに伝えます。 エージェントは修正から学習します。
  • エージェントに別の方法を試すように依頼します。 たとえば、GitHub Copilot チャット ウィンドウに「"この修正プログラムが機能しません。別の戦略を試してください。"
  • 必要に応じて、最後の変更を元に戻すか元に戻し、タスクを再起動します。

大規模なソリューションの所要時間が長すぎます

症状: 多くのプロジェクトを含む大規模なソリューションのアップグレードには、非常に長い時間がかかるか、ストールしているようです。

解決策:

  • パイロットとして 1 つの代表的なプロジェクトから始めます。 これにより、全身的な問題が早期に発生します。
  • tasks.md.github/upgrades/{SCENARIO ID}を確認して進行状況を監視します。
  • セッションがタイムアウトした場合は、新しいセッションを開始します。 エージェントは中断した場所から再開します。

復旧戦略

すべての変更を元に戻す

アップグレードに Git ブランチを使用した場合は、すべてを元に戻します。

git checkout your-original-branch
git branch -D upgrade-branch

元のコードは手つかずです。

最後の変更を元に戻す

最新のコミットを元に戻します。

git revert HEAD

または、エージェントに指示します。 Revert the last change.

特定のステージから再起動する

エージェントのプランが機能していない場合は、次のようなプロンプトを送信して、前のステージから再起動します。

  • Let's redo the plan. I want a different approach to the conformance issues.
  • Go back to the assessment and reconsider the upgrade strategy.

新たに開始する

.github/upgrades/{SCENARIO ID} フォルダーを削除し、エージェントとの新しい会話を開始します。 最初から始まります。

ヘルプを取得する

問題を解決できない場合:

  1. Help>Send Feedback>Visual Studioで問題を報告を使用します。
  2. 可能であれば、execution-log.md.github/upgrades/{SCENARIO ID}の内容を含めます。