Transcription
Я создал пул-реквест некоторое время назад, и, скажем так, он не идеален. Я не следовал хорошим практикам кодирования или безопасности. Прежде чем остальная часть моей команды увидит мой беспорядок, я могу получить помощь как от Copilot, так и от сканирования кода.
Просматривая главную страницу PR, я вижу, что Copilot расширил мое короткое описание, перечислив измененные файлы и то, что он проверил. Прокрутив немного дальше, я вижу первое замечание от Copilot. Я добавил небезопасный код. Я использую команду exec вместо вызова функции. Copilot предлагает мне исправление прямо здесь.
Сейчас я оставлю это как есть, потому что знаю, что сканирование кода будет немного позже, и я хочу увидеть, что оно скажет. Не волнуйтесь, это будет решено.
Обзор Copilot выявил пару других проблем с моим кодом, связанных с подсказками типов. Похоже, мне не хватает одной для возвращаемого значения этой функции, а другая просто некорректна. Как я уже сказал, мой PR не идеален.
Наконец, я вижу результаты сканирования кода — инструмента безопасности от GitHub, который ищет уязвимости в коде, который мы пишем. Он обнаружил вызов функции Python exec. Но я не эксперт по безопасности, и, возможно, я не знаю, как это исправить.
Copilot Autofix, часть сканирования кода, сгенерировал как объяснение уязвимости, так и предложенное решение. Я собираюсь закоммитить это предложение. Итак, найдено означает исправлено.
Обновление ветки и PR автоматически приведет к повторному запуску сканирования кода, что даст мне уверенность в том, что сгенерированный код устранил уязвимость. Мы можем видеть все эти проверки безопасности и тесты, которые выполняются против обновленного кода.
Если мы откроем вкладку файлов, чтобы лучше рассмотреть изменения, мы заметим, что рекомендации из обзора Copilot также отображаются здесь. Позвольте мне применить предложение об обновлении моего типа возвращаемого значения прямо здесь. Я могу сделать это, даже не возвращаясь к своей IDE.
Давайте быстро пройдемся по настройкам, которые позволяют этому произойти. Если я открою настройки моего репозитория, у нас есть наборы правил. Есть один, созданный для тестов и безопасности. Мы требуем пул-реквест и установили количество человеческих рецензентов равным одному. Мы также автоматически запрашиваем рецензии от Copilot, чтобы оптимизировать наш процесс DevOps.
Мы включили проверки состояния в виде фронтенд и бэкенд тестов. Это находится в рабочем процессе, который определен в репозитории, и они требуются перед завершением слияния. Наконец, мы также требуем, чтобы результаты сканирования кода были чистыми.
Чтобы помочь Copilot в процессе обзора, мы создали файл инструкций Copilot. Этот файл является частью репозитория и, честно говоря, должен быть создан в любом репозитории, где разработчики используют Copilot. Файл инструкций позволяет вам предоставить дополнительный контекст. Copilot Review использует этот файл, чтобы лучше понять наши практики и предлагать лучшие предложения.
Теперь я не единственный, кто создает PR в этом репозитории. Copilot тоже, и мы должны проверять этот код так же, как и код любого другого разработчика. Мы можем видеть PR с отличным описанием того, что было создано, и файлов, которые он изменил.
Я хочу открыть код и запустить веб-сайт, чтобы увидеть, как все выглядит. Я могу сделать это прямо здесь, открыв codespace в ветке. Функциональность фильтрации, которую он создал, кажется, работает нормально. Но когда я открываю игру, я замечаю, что отображение звезд показывает половину звезды. Было бы неплохо, если бы у нас было градиентное заполнение для десятичной части.
Позвольте мне вернуться к обзору, отметить Copilot в комментарии и сделать запрос. Copilot приступает к обновлению, не жалуясь на расширение объема работ. Как только он закончит, я вернусь в codespace, вытяну код, снова запущу сайт, и я увижу это обновление. Это намного лучше. Мне очень нравится, как это выглядит сейчас.
Но я хочу убедиться, что все тесты проходят для PR, который сделал Copilot, так же, как я бы сделал для любого другого разработчика. В целях безопасности действия для PR Copilot не будут выполняться, если я их не одобрю. Давайте сделаем это. Убедимся, что они проходят, и все выглядит хорошо.
Мы видим, что у нас есть полный набор инструментов для проверки и валидации как кода наших разработчиков, так и кода Copilot.