Evraz Code Review Bot — это интеллектуальный бот, разработанный для автоматизированной проверки кода. Он использует передовые языковые модели и инструменты статического анализа для предоставления комплексной обратной связи по качеству кода, уязвимостям безопасности и соблюдению передовых практик. Бот создан с использованием Python и интегрируется с Telegram для упрощения взаимодействия с пользователем.
- Анализ различных языков программирования, включая Python, JavaScript и C++.
- Поддержка загрузки файлов
.zip
, содержащих несколько файлов или папок, для пакетного анализа. - Создание подробных отчетов по проверке кода в формате Markdown.
- Конвертация отчетов Markdown в PDF для простого обмена и документирования.
- Использование современных языковых моделей для интеллектуального анализа кода.
graph TD
A[User Interaction] -->|Uploads Code File| B[CodeReviewBot]
B -->|Handles Command| C[handle_start]
B -->|Processes Document| D[handle_document]
B -->|Processes Text Code| E[handle_text_code]
D -->|Sends File for Processing| F[CodeReviewWorker]
E -->|Sends Code for Review| F
F -->|Analyzes Code| G[CodeAnalyzer]
F -->|Sends Updates| H[send_message_updates]
F -->|Sends Document| I[send_document_updates]
G -->|Performs Static Analysis| J[_local_analysis]
G -->|Generates LLM Review| K[_llm_code_review]
G -->|Runs Pylint| L[_generate_pylint]
G -->|Runs Bandit| M[_security_scan]
K -->|Generates Report| N[MarkdownToPDFConverter]
N -->|Converts Markdown to PDF| O[convert]
H -->|Sends Review Updates| A
I -->|Sends PDF Document| A
- Клонируйте репозиторий:
git clone https://github.com/morishima-senpai/evraz.git
cd evraz-code-review-bot
- Запустите скрипт установки:
bash start.sh
Этот скрипт установит все необходимые предварительные требования, включая Python и требуемые библиотеки Python.
- Настройте переменные среды:
Создайте файл
.env
в корневом каталоге и добавьте следующие переменные:
REDIS_URL=your_redis_url
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
LLM_API_KEY=your_llm_api_key
LLM_END_POINT=your_llm_endpoint_url
- Запустите бота:
Запустите бота с помощью команды:
python3 bot.py
- Взаимодействуйте с ботом:
- Отправьте команду
/start
, чтобы начать разговор. - Загрузите файл кода или архив
.zip
, содержащий несколько файлов кода. - Бот проанализирует код и предоставит обратную связь.
Бот Evraz Code Review использует следующие компоненты:
- API Telegram Bot: для взаимодействия с пользователем и обработки сообщений.
- Celery: для асинхронной обработки задач, что позволяет боту обрабатывать несколько запросов одновременно.
- Инструменты статического анализа: такие как Pylint и Bandit для проверки качества и безопасности кода.
- LLM (языковая модель): для создания интеллектуальной обратной связи на основе пользовательских рекомендаций и передового опыта.
Основной класс, который обрабатывает взаимодействие с API Telegram. Он управляет пользовательскими командами и загрузкой файлов.
Ключевые методы:
handle_start
: отвечает на команду/start
.handle_document
: обрабатывает загруженные файлы кода.handle_text_code
: обрабатывает прямые текстовые сообщения кода.
Обрабатывает процесс анализа кода, используя класс CodeAnalyzer
. Он управляет созданием отчетов по проверке кода и отправкой обновлений пользователям.
Ключевые методы:
process_code_review
: Анализирует предоставленный код и создает отчет._load_guidelines
: Загружает пользовательские рекомендации по качеству кода.
Выполняет статический анализ и интегрируется с LLM для создания обзоров кода. Он использует различные инструменты, такие как Pylint и Bandit для анализа.
Ключевые методы:
analyze
: Проводит комплексный анализ содержимого кода._local_analysis
: Выполняет локальный статический анализ кода._llm_code_review
: Использует LLM для создания отчета по проверке.
Преобразует созданные отчеты Markdown в формат PDF для удобства обмена.
Ключевые методы:
convert
: преобразует текст Markdown в формат PDF.
- Взаимодействие с пользователем:
- Пользователь запускает бота и загружает файл кода или архив
.zip
.
- Обработка файла:
- Бот получает файл и делегирует обработку
CodeReviewWorker
.
- Анализ кода:
CodeAnalyzer
выполняет статический анализ с использованием таких инструментов, как Pylint и Bandit.- Он создает отчет на основе анализа и отправляет его LLM для дальнейшего анализа.
- Создание отчета:
-
Бот преобразует созданный отчет в формат Markdown.
-
Затем он преобразует отчет Markdown в формат PDF для загрузки пользователем.
- Обратная связь:
- Бот отправляет сгенерированный отчет PDF обратно пользователю через Telegram.
Работает как с .zip
, так и с отдельными файлами: Смотреть видео