Как стать автором
Обновить

Внедряем AI Code Review на GIthub: сомнительно, но окэй…

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.9K

Код‑ревью — важная часть жизненного цикла разработки продукта, но давайте честно: никто не любит просматривать чужой код. Часто, разработчики делают ревью спустя рукава, но даже если это не так — человеческий фактор может сыграть злую шутку и уязвимость в коде может быть упущена. Пропущенные ошибки, уязвимости и нестабильный код могут привести к задержкам в релизе и росту технического долга. Более того, зачастую, компании имеют свои гайдлайны по оформлению code review, которые также необходимо проверять вручную.

Что если эту рутинную задачу можно ускорить с помощью ИИ? Нет, мы не говорим о замене человека в процессе code review, а всего лишь о дополнительной помощи со стороны языковых моделей. Сегодня разберём, как настроить AI‑код‑ревью на GitHub используя только open source инструменты.

Зачем нужно AI код ревью? Гипотеза

В данной статье я предлагаю следующую гипотезу. Ревью кода с помощью ИИ помогает командам ускорить процесс разработки, улучшить качество кода и быстрее находить потенциальные баги. Со стороны бизнес‑метрик мы получаем ускоренный процесс доставки обновлений и реализации фичей. Это особенно полезно для больших команд и проектов, где ревью без ИИ может быть медленным и субъективным.

Большие языковые модели (LLM), дотренированные на задачах анализа и генерации кода (напр. Qwen 2.5 Coder, DeepSeek Coder) способны «понимать» код, выявлять уязвимости, следить за стилем написания и даже давать рекомендации по архитектуре на довольно высоком уровне, иногда превосходя людской потенциал [1]. Именно LLM предоставляют нам сегодня технологическую возможность для помощи разработчикам в проверке кода.

Настраиваем AI Code Review на Github

Архитектура решения

Архитектура предлагаемого решения состоит из двух основных частей и реализована с применением open‑source инструментов.

Архитектура AI Code Review
Архитектура AI Code Review

В качестве ядра для анализа кода используется большая языковая модель (LLM), запущенная на GPU сервере через платформу vLLM, либо же установленная локально с помощью фреймворка Ollama с открытыми портами (подробнее о деплое LLM я писал тут). Интерфейс соединения между LLM и GitHub осуществляется по OpenAI‑совместимому API, благодаря чему достигается совместимость платформы с необходимыми схемами взаимодействия и стандартизация запросов.

GitHub Actions используется для организации процесса автоматического запуска AI Code Review при каждом внесении изменений в репозиторий, обеспечивая эффективное включение проверки кода в существующий процесс CI/CD. В рамках Actions мы используем опенсорсный Code Review GPT, который я немножечко допилил для данного туториала. Ниже приведён .yml файл для Github Actions.

name: Code Review GPT Test

on:
  pull_request:
    branches: [main]

permissions:
  pull-requests: write
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest

      - name: Install code-review-gpt
        run: bun install -g code-review-llm-perevalov

      - name: Run code review script
        run: code-review-llm-perevalov review --ci=github --model=Qwen/Qwen2.5-Coder-14B-Instruct
        env:
          GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
          BASE_SHA: ${{ github.event.pull_request.base.sha }}
          GITHUB_SHA: ${{ github.sha }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}

Если упростить, то Code Review GPT это утилита, которая забирает изменения из Pull Request'a, отправляет их на анализ к LLM, получает фидбек от языковой модели и записывает его в комментарии к PR. Чуть ниже увидим, как это работает в реальности.

Настройка Github репозитория

Создайте новый или используйте уже существующий Github репозиторий для настройки AI Code Review. Как вы видели в .yml файле, нам потребуются инициализировать несколько Github Secrets.

Открыв репозиторий в браузере, переходим в Settings → Secrets and variables → Actions и добавляем три секрета:

  • GH_TOKEN — персональный токен GitHub (генерируется в Developer settings → Personal access tokens).

  • OPENAI_BASE_URL — URL, где развернута языковая модель (тут подробнее про то, как деплоить).

  • OPENAI_API_KEY — API-ключ модели (может быть фиктивным, если модель не требует авторизации).

Не забудьте запушить .yml файл. Теперь, всё готово к проверке.

Тестируем AI Code Review

Для тестирования я написал довольно простой фрагмент кода, в котором явно содержится захардкоженный API ключ. В качестве LLM, я использовал Qwen2.5 14B Instruct, развёрнутую с помощью vLLM на GPU сервере (тут я писал подробнее). А вот и фрагмент кода:

from openai import OpenAI

# import openai
client = OpenAI(
    api_key="iupihpi", # api key
    base_url="https://your.proxy.url.net/v1", # base url
)

# call the chat endpoint
chat_response = client.chat.completions.create(
        model="Qwen/Qwen2.5-Coder-14B-Instruct",
        messages=[
            {"role": "system", "content": """You are a Named Entity Recognition Tool.
Recognize named entities and output the structured data as a JSON. **Output ONLY the structured data.**
Below is a text for you to analyze."""},
            {"role": "user", "content": "I live in London and work for Google. I am a software engineer."},
        ]
    )

print(chat_response)

После добавления изменений, пушим их в бранч, отличный от main и создаём Pull Request в main. Если вы всё сделали верно, то нужный нам Github Action стриггерится и через некоторое время Code Review GPT сгенерирует нам фидбек по предлагаемым изменениям. Вот пример того, что получилось у меня:

Пример сгенерированного AI код ревью. Комментарий был написан как-бы мной т.к. я создал Github token под своим аккаунтом.
Пример сгенерированного AI код ревью. Комментарий был написан как-бы мной т.к. я создал Github token под своим аккаунтом.

Как можно видеть из скриншота выше, AI Code Review действительно работает (я бы сказал: в рамках proof of concept). Мы видим, что LLM действительно могут помочь разработчикам с идентификацией, как минимум, базовых уязвимостей и несоответствий по стилю. Это может минимизировать человеческий фактор при проверках кода, однако, мы не говорим о полном замещении людей в рамках код ревью, а всего лишь о дополнении и помощи.

Вместо заключения

В данной статье мы рассмотрели базовый пример внедрения AI code review и показали на примере простой уязвимости, как это работает и может помочь командам разработки.

Если вам интересно более глубокое погружение в AI code review (например, интеграция в Gitlab) или же в AI Coding Assistants, я подготовил курс для разработчиков и тимлидов, который так и называется «AI DevTools». Доступ можно получить тут, для моих читателей — специальный промокод: HABRHABR50

Если вам интересна моя деятельность, милости прошу сюда.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Пробовали ли вы уже AI Code Review?
17.24% Да (на работе)5
0% Да (в личных проектах)0
62.07% Нет (но хочу)18
20.69% Нет (не доверяю)6
Проголосовали 29 пользователей. Воздержались 4 пользователя.
Теги:
Хабы:
Всего голосов 6: ↑4 и ↓2+2
Комментарии4

Публикации

Работа

Data Scientist
39 вакансий

Ближайшие события