Поиск и исправление ошибок в коде может быть разочарованием, особенно при создании нового разработчика. К счастью, такие инструменты, как GitHub Copilot можно быстро выявлять и сквашировать ошибки, позволяя сосредоточиться на более творческой, интересной работе.
Необходимые компоненты
В примерах этой статьи предполагается, что вы используете GitHub Copilot для отладки проекта Python (Visual Studio CodeVS Code). Чтобы выполнить следующие примеры, необходимо:
- Выполните настройку Visual Studio CodeCopilot в Visual Studio Code документации.
- Скачать Python.
- Установите расширение Python для Visual Studio Code.
Обучение отладке с помощью примеров
При попытке запустить код с ошибкой возникает две основные ситуации:
- Код завершает работу до завершения работы и получает сообщение об ошибке.
- Код выполняется без ошибок, но выходные данные отличаются от ожидаемых.
К счастью, Copilot может помочь отладить код в обоих ситуациях. Чтобы узнать, как это сделать, ознакомьтесь со следующими примерами.
Отладка ошибки с помощью GitHub Copilot
При выполнении кода с ошибкой часто возникает сообщение об ошибке. Сообщение сообщает файлу и строке, в которой произошла ошибка, и кратко описывает, что пошло не так. Однако сообщения об ошибках могут быть запутанными. Чтобы полностью понять и исправить ошибку, мы можем обратиться Copilot за помощью.
Давайте рассмотрим пример репозитория: new2code/debug-with-copilot
Клонирование примера репозитория
Сначала необходимо создать локальную копию репозитория:
- Начните клонирование репозитория new2code/debug-with-copilot в VS Code.
- Выберите расположение для сохранения репозитория на компьютере, а затем нажмите кнопку "Выбрать в качестве назначения репозитория".
- При появлении запроса откройте репозиторий.
Запуск файла с ошибками
Теперь давайте запустите bugged_dice_battle.py файл. Эта программа имитирует битву за кости между двумя игроками.
-
Откройте VS Codeи просмотрите
bugged_dice_battle.pyфайл. -
Откройте палитру команд, нажав Ctrl+Shift+P (Windows/Linux) или Cmd+Shift+P (Mac).
-
Введите
Terminal: Create New Terminalи нажмите клавишу ВВОД. -
На вкладке терминала вставьте следующую команду.
Windows:
Shell py bugged_dice_battle.py
py bugged_dice_battle.pyMac или Linux:
Shell python bugged_dice_battle.py
python bugged_dice_battle.py -
Нажмите клавишу ВВОД , чтобы запустить программу.
К сожалению, в терминале мы получаем текст ошибки, заканчивающийся следующим сообщением:
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 -
Нажмите клавишу ВВОД , чтобы запустить программу.
К сожалению, код не работает должным образом. Мы хотим, чтобы он возвращался 720, правильное значение 6 факториальных, но выходные данные гораздо выше, чем это.
Отладка файла
Чтобы понять, что пошло не так, откройте Копилот Чат и отправьте следующий запрос:
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 , почему выходные данные неверны и как его можно исправить. Для получения наилучших результатов предоставьте максимально возможный контекст о том, как выходные данные отличаются от ваших ожиданий.
С помощью этой тактики вы хорошо оснащены, чтобы начать сквашировать ошибки в вашем проекте!
Следующие шаги
При продолжении написания кода вы, вероятно, столкнетесь с конкретными сценариями проблем и ошибками, которые сложно отлаживать. Список потенциальных проблем и примеры Копилот Чат запросов для их устранения см. в разделе Ошибки отладки.