Внедряем AI Code Review на GIthub: сомнительно, но окэй…. ai code review.. ai code review. ai devtools.. ai code review. ai devtools. DevOps.. ai code review. ai devtools. DevOps. github.. ai code review. ai devtools. DevOps. github. llm.. ai code review. ai devtools. DevOps. github. llm. llm code review.. ai code review. ai devtools. DevOps. github. llm. llm code review. искусственный интеллект.. ai code review. ai devtools. DevOps. github. llm. llm code review. искусственный интеллект. Машинное обучение.. ai code review. ai devtools. DevOps. github. llm. llm code review. искусственный интеллект. Машинное обучение. Промышленное программирование.

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

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

Автор: perevalov_a

Источник

Rambler's Top100