Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Copilot Autofix — это функция GitHub Advanced Security для Azure DevOps на базе ИИ, которая генерирует предлагаемые исправления для оповещений, созданных при сканировании кода. Когда CodeQL обнаруживает уязвимость или ошибку в коде, вы можете сгенерировать исправление по предупреждению прямо на вкладке «Расширенная безопасность». Copilot Autofix использует агент Copilot для написания кода, чтобы создать исправление, и открывает запрос на включение изменений с предложенным изменением, чтобы вы могли просмотреть, изменить и принять его в рамках стандартного процесса работы с запросами на включение изменений.
Note
Эта функция доступна в ограниченной общедоступной предварительной версии. Microsoft в настоящее время не принимает дополнительных пользователей для предварительной версии.
Функциональные возможности могут изменяться или удаляться без уведомления. Предварительные версии функций не поддерживают соглашение об уровне обслуживания (SLA) и ограниченную поддержку.
GitHub Advanced Security for Azure DevOps работает с Azure Repos. Чтобы использовать GitHub Advanced Security с репозиториями GitHub, см. GitHub Advanced Security.
Необходимые условия
| Категория | Requirements |
|---|---|
| Разрешения | — Чтобы просмотреть сводку всех оповещений для репозитория, нужны разрешения участника для репозитория. — Чтобы закрыть оповещения в расширенной безопасности: Администратор проекта разрешения. — Для управления разрешениями в Расширенной безопасности: быть членом группы Администраторов коллекции проектов или иметь разрешение Расширенная безопасность: управление параметрами установлено на Разрешить. |
Дополнительные сведения о разрешениях расширенной безопасности см. в разделе Управление разрешениями расширенной безопасности.
- Сканирование кода, настроенное для вашего репозитория с использованием стандартной или расширенной настройки.
- По крайней мере одно оповещение о сканировании кода CodeQL.
О Copilot Autofix
Copilot Autofix объединяет аналитические возможности CodeQL с большой языковой моделью, лежащей в основе агента программирования Copilot. Когда вы создаёте исправление для поддерживаемого оповещения сканирования кода, Copilot Autofix анализирует это оповещение и окружающий его код, а затем открывает pull request, который содержит:
- Предлагаемое изменение кода, которое устраняет базовую уязвимость.
- Описание исправляемого оповещения, включая идентификатор оповещения, уровень серьёзности и краткое описание изменения.
Так как предлагаемое исправление рассматривает более широкий контекст базы кода, изменение может охватывать больше одной строки, в которой было создано оповещение, и может включать изменения в другие файлы, где это необходимо.
Note
Данные, обрабатываемые Copilot Autofix, не используются для обучения крупных языковых моделей (LLM).
Important
Предложения Copilot по автоисправлению генерируются моделью ИИ, и не гарантируется, что они будут правильными, полными или безопасными. Всегда внимательно проверяйте pull request, убеждайтесь, что он устраняет предупреждение, не создавая новых проблем, и тестируйте свои изменения перед слиянием.
Поддерживаемые языки
Copilot Autofix поддерживает те же языки, что и CodeQL для сканирования кода, включая C/C++, C#, Go, Java/Kotlin, JavaScript/TypeScript, Python, Ruby и Swift. Текущий список языков, поддерживаемых CodeQL, см. в разделе "Поддержка языков и запросов".
Billing
Copilot Autofix входит в лицензию GitHub Advanced Security для Azure DevOps. Создание исправления расходует ИИ-кредиты со счетчика выставления счетов Azure вашей организации.
Каждое поколение исправлений использует маркеры, которые включают входные маркеры для контекста кода, отправленного в модель, выходные маркеры для предлагаемого изменения и кэшированные маркеры, которые повторно используют существующий контекст.
Для простого выставления счетов эти токены преобразуются в стандартную единицу, называемую кредитом GitHub ИИ, где 1 кредит равен $0,01 USD. Плата взимается за подписку Azure, связанную с вашей Azure DevOps организацией, и отображается как отдельный счетчик в Azure Cost Management.
Стоимость каждого исправления зависит от размера окружающего контекста кода и сложности изменения.
Чтобы отслеживать ежедневные затраты, перейдите в Подписка>Управление затратами>Анализ затрат на портале Azure.
Включение автофикса Copilot
Вы можете включить функцию Copilot Autofix на уровне организации, проекта или репозитория. Если включить автофикс в более широкой области, параметр применяется ко всем репозиториям в этой области. Выберите, где настроить Autofix, в зависимости от того, к каким репозиториям должна применяться эта настройка:
| Scope | Где настроить автофикс |
|---|---|
| Предприятие | Выберите Настройки организации>Репозитории, чтобы включить Autofix для всех репозиториев организации. |
| Проект | Выберите Настройки проекта>Репозитории>Все репозитории, чтобы включить автоисправление для всех репозиториев в проекте. |
| Репозиторий | Выберите Настройки проекта>Репозитории, а затем выберите репозиторий, чтобы включить Autofix только для этого репозитория. |
Чтобы включить Copilot Autofix:
- Войдите в организацию Azure DevOps (
https://dev.azure.com/{yourorganization}). - Перейдите на страницу параметров для области организации, проекта или репозитория, которую вы хотите настроить.
- В разделе "Расширенная безопасность " откройте панель функций "Безопасность кода ".
- Установите флажок Autofix для предупреждений сканирования кода, чтобы автоматически создавать исправления для предупреждений сканирования кода, которые создает агент Copilot для написания кода.
- Щелкните Применить, чтобы сохранить изменения.
CodeQL уже должен быть запущен и генерировать оповещения для репозитория. Дополнительные сведения см. в разделе Настройка сканирования кода и Настройка GitHub расширенных функций безопасности.
Создание исправления для оповещения
После включения автоисправления Copilot можно сгенерировать исправление на основе любого поддерживаемого предупреждения сканирования кода.
- Выберите Repos>Advanced Security.
- Перейдите на вкладку "Сканирование кода " и выберите оповещение, чтобы открыть представление сведений.
- Просмотрите местоположение, описание и рекомендацию оповещения, чтобы понять обнаруженную проблему.
- Выберите "Создать исправление".
Пока Copilot Autofix выполняет исправление, в области сведений об оповещении отображается, что исправление находится в процессе выполнения. Copilot Autofix открывает запрос на слияние, когда исправление готово.
Автоисправление Copilot создает исправление и открывает pull request из ветки с именем copilot-autofix/.... Запрос на включение изменений помечен тегом Copilot Autofix, с помощью которого можно идентифицировать запросы на включение изменений с Autofix в списке запросов на включение изменений.
Для оповещений CodeQL запрос на включение изменений автоматически отображается в разделе Связанные запросы на включение изменений на странице сведений об оповещении и продолжает обновляться по мере выполнения создания и завершения, поэтому вам не нужно обновлять страницу.
Если Copilot Autofix не вносит никаких изменений в код для этого оповещения, он не создает ветку или pull request и не добавляет ссылку на pull request на странице сведений об оповещении. В этом случае исправьте оповещение вручную. Дополнительные сведения см. в разделе "Исправление недоступно".
Проверьте и объедините исправление
Запрос на включение изменений, который открывает Copilot Autofix, работает как любой другой запрос на включение изменений в Azure Repos. В его описании кратко излагается предупреждение, которое устраняет это исправление.
Метка Copilot Autofix обозначает запросы на включение с автоматическим исправлением.
- Откройте запрос на включение изменений в разделе предупреждения Связанные запросы на включение изменений или в Repos>Запросы на включение изменений.
- Просмотрите предлагаемое изменение на вкладке "Файлы " во всех затронутых файлах.
- Измените изменение, если вам нужно соответствовать стилю кода, соглашениям об именовании или требованиям проекта.
- Утвердите и завершите запрос на включение изменений в рамках обычного процесса проверки.
После слияния pull request и завершения следующего сканирования кода оповещение автоматически закрывается, если исправление устраняет основную уязвимость.
Tip
Созданное исправление — это отправная точка, а не окончательный ответ. Обработайте запрос на вытягивание как любое другое изменение: просмотрите его, протестируйте его и запросите дополнительных рецензентов по мере необходимости перед слиянием.
Устранение неполадок с автофиксом Copilot
Исправление было создано, но не удалось зафиксировать или отправить
Copilot Autofix использует noreply@dev.azure.com в качестве адреса электронной почты автора коммита. Если политика проверки адреса электронной почты автора коммита не разрешает использовать этот адрес, Copilot Autofix может сгенерировать изменение в коде, но не может закоммитить его или отправить, чтобы создать pull request.
В представлении сведений об оповещении отображается ошибка, в которой указан адрес электронной почты автора заблокированного коммита.
Добавьте noreply@dev.azure.com к допустимым шаблонам адресов электронной почты в политике проверки адреса электронной почты автора коммита:
- Выберите параметры проекта>хранилищ.
- Выберите все репозитории , чтобы обновить политику уровня проекта, или выберите репозиторий, имеющий политику.
- Выберите правила.
- В политиках репозитория найдите проверку адреса электронной почты автора коммита.
- Добавьте
noreply@dev.azure.comв допустимые шаблоны электронной почты. - Вернитесь к оповещению сканирования кода и выберите исправление повторных попыток.
Выполнение завершается сбоем
Если не удаётся завершить запуск Copilot Autofix, в предупреждении явно отображается состояние сбоя, чтобы вы могли сразу увидеть, что запуск завершился неудачно. Из состояния сбоя можно повторить выполнение, чтобы создать новое исправление.
Выполнение может завершиться сбоем по временным причинам или, когда выполнение не создает изменения кода, доступные для использования. Повторите запуск, чтобы снова создать исправление.
Исправление недоступно
Copilot Autofix не может сгенерировать исправление для каждого оповещения. Исправление может быть недоступно, если:
- Тип оповещения в настоящее время не поддерживается Copilot autofix.
- Copilot приходит к выводу, что предупреждение может быть ложным срабатыванием.
- Настраиваемый запрос или стороннее средство, а не CodeQL, создает оповещение.
- Автоисправление Copilot выполняется, но не вносит никаких изменений в код. В этом случае ни ветка, ни запрос на слияние не создаются.
Если функция Autofix в Copilot определяет, что оповещение может быть ложным срабатыванием, и не вносит никаких изменений, результат отображается в представлении сведений об оповещении. Вы можете проверить запуск или повторить попытку исправления.
Если исправление недоступно, используйте разделы рекомендации и примеры оповещения, чтобы исправить его или закрыть оповещение вручную. Дополнительные сведения см. в детали оповещения.