コード内のバグを見つけて修正するのは、特に開発初心者の場合はフラストレーションがたまるものです。 幸いなことに、 GitHub Copilot のようなツールはすぐにバグを特定してスカッシュすることができ、より創造的で興味深い作業に集中することができます。
前提条件
この記事の例では、GitHub Copilot (Visual Studio Code) で VS Code を使用してPython プロジェクトをデバッグしていることを前提としています。 この例に従うには、次のことを行う必要があります。
- Visual Studio CodeドキュメントのCopilotを使用したVisual Studio Codeのセットアップを完了します。
- download Python。
- Visual Studio CodeのPython拡張機能をインストールします。
例を通してデバッグを学ぶ
バグのあるコードを実行しようとすると、主に 2 つの状況が発生します。
- 実行が完了する前にコードが終了し、エラー メッセージを受け取る。
- コードはエラーなしで実行されるが、想定と異なる出力になる。
幸いなことに、 Copilot は両方の状況でコードをデバッグするのに役立ちます。 その方法については、次の例を参照してください。
でエラーをデバッグする GitHub Copilot
バグのあるコードを実行すると、多くの場合、エラー メッセージを受け取ります。 メッセージには、エラーが発生したファイルと行が示され、何が問題だったかが簡単に説明されています。 ただし、エラー メッセージはわかりにくい場合があります。 バグを完全に理解して修正するために、 Copilot にヘルプを依頼できます。
例のリポジトリを使ってこれを試してみましょう: new2code/debug-with-copilot.
サンプルリポジトリをコピーする
まず、リポジトリのローカル コピーを作成する必要があります。
- VS Code で new2code/debug-with-copilot リポジトリの複製を開始します。
- コンピューター上のリポジトリを保存する場所を選び、[Select as Repository Destination] をクリックします。
- プロンプトが表示されたら、リポジトリを開きます。
バグのあるファイルの実行
次に、bugged_dice_battle.py ファイルを実行してみましょう。 このプログラムは、2 人のプレイヤーによるサイコロを使った戦いをシミュレートします。
-
VS Codeで、
bugged_dice_battle.pyファイルを開いて確認します。 -
コマンド パレットを開くには、Ctrl+Shift+P (Windows linux) または Cmd+Shift+P (Mac)。
-
「
Terminal: Create New Terminal」と入力して Enter キーを押します。 -
ターミナル タブに次のコマンドを貼り付けます。
Windows:
Shell py bugged_dice_battle.py
py bugged_dice_battle.pyMac または Linux:
Shell python bugged_dice_battle.py
python bugged_dice_battle.py -
Enter キーを押してプログラムを実行します。
残念ながら、ターミナルに次のメッセージで終わるエラー テキストが表示されます。
TypeError: str に連結できるのは、("int" ではなく) str のみです
ファイルのデバッグ
このエラーの意味を理解するには、コパイロットチャットでVS Codeを開き、次のプロンプトを貼り付けて送信します。
Explain in depth why my code produces the following error and how I can fix it: TypeError: can only concatenate str (not "int") to str
Explain in depth why my code produces the following error and how I can fix it:
TypeError: can only concatenate str (not "int") to str
Copilot は、文字列に die_1 および die_2 整数を連結しようとしているため、エラーが発生したことを返します。文字列を連結できるのは文字列のみです。
弊社のコードの更新版も提供され、整数を文字列に変換してから連結するstr()
Copilotの提案をファイルに適用して、デバッグの最後の手順を練習します。
で正しくない出力をデバッグする GitHub Copilot
ときどき、バグのあるコードを実行してもエラーが発生せず、出力が明らかに正しくないことがあります。 この場合、 VS Code がバグの場所や説明を伝えることができないため、デバッグがより困難になる可能性があります。
これらの "非表示" バグの場合、 Copilot は特に便利です。 サンプル リポジトリの他のファイル (bugged_factorial_finder.py) で実際に体験してみましょう。 これは、階乗を計算することになっているPythonプログラムです。
バグのあるファイルの実行
まず、プログラムを実行して、正しくない出力を確認しましょう。
-
bugged_factorial_finder.pyファイルを開いて確認します。 -
先ほど作成したターミナルに、次のコマンドを貼り付けます。 Windows:
Shell py bugged_factorial_finder.py
py bugged_factorial_finder.pyMac または Linux:
Shell python bugged_factorial_finder.py
python bugged_factorial_finder.py -
Enter キーを押してプログラムを実行します。
残念ながら、コードは期待どおりに機能しません。 戻り値は 6 階乗の正しい値である 720 になるはずですが、出力はそれよりもはるかに大きい値です。
ファイルのデバッグ
問題の原因を理解するには、コパイロットチャットを開き、次のプロンプトを送信します。
Why is the output of this code so much higher than expected? Please explain in depth and suggest a solution.
Why is the output of this code so much higher than expected? Please explain in depth and suggest a solution.
Copilot
*=演算子を使用しているため、実際にはfactorialにiとfactorialの両方を乗算しています。 つまり、ループの反復ごとに余計な factorial が乗算されています。
このエラーを修正するために、 Copilot は、数式から余分な factorial を削除するか、 *= 演算子を =に変更するコードを提案します。 さっそく変更しましょう。
自分のプロジェクトをデバッグする
Copilotを使用していくつかの簡単なプログラムのデバッグを練習したので、同じ手法を使用して、自分の作業に隠れているバグを見つけて修正できます。
たとえば、コードによって生成されたエラー メッセージをデバッグするには、次のプロンプト Copilot 送信します。
Explain in depth why my code produces the following error and how I can fix it: YOUR-ERROR-MESSAGE
Explain in depth why my code produces the following error and how I can fix it:
YOUR-ERROR-MESSAGE
それ以外の場合は、正しくない出力をデバッグしている場合は、出力が正しくない理由と修正方法 Copilot 問い合わせください。 最良の結果を得るには、出力が想定とどのように異なるかについて、できるだけ多くのコンテキストを提供します。
このような戦術があれば、プロジェクト内のバグ修正を始める準備は万全です。
次のステップ
コーディングを続けていると、デバッグが難しい特定の問題シナリオやエラーが発生することがあります。 潜在的な問題の一覧と、問題を修正するための コパイロットチャット プロンプトの例については、 エラーをデバッグする を参照してください。