
CLI-инструмент на основе ИИ, который проверяет код на уязвимости безопасности, ошибки и антипаттерны с помощью LLM. Поддерживает локальные и облачные провайдеры, git diff и интеграцию с CI/CD.
Проверка кода с помощью ИИ прямо в терминале.
Одна команда. Мгновенная обратная связь. Находит уязвимости, ошибки и плохие паттерны до того, как они попадут в продакшн.
Установка · Быстрый старт · Использование · Провайдеры · Вклад
codereview отправляет ваш код в LLM и возвращает структурированную, цветную проверку прямо в терминале — с оценкой серьёзности, ссылками на строки и конкретными предложениями по исправлению.
Никакого браузера. Никаких PR. Никакого ожидания коллег. Просто:
codereview app.py
git clone https://github.com/jaydendancer12/ai-code-review.git
cd ai-code-review
./install.sh
Или вручную:
git clone https://github.com/jaydendancer12/ai-code-review.git
cd ai-code-review
pip install -e .
Все зависимости (rich, requests) установятся автоматически. Ничего дополнительно настраивать не нужно.
codereview нужна LLM для анализа вашего кода. Самый быстрый бесплатный вариант — Groq — без кредитной карты, без пробного периода, просто бесплатно.
export GROQ_API_KEY="gsk_ваш_ключ"
Чтобы сделать его постоянным (чтобы не вводить каждый раз):
# Для zsh (по умолчанию на Mac)
echo 'export GROQ_API_KEY="gsk_ваш_ключ"' >> ~/.zshrc
source ~/.zshrc
# Для bash (по умолчанию на Linux)
echo 'export GROQ_API_KEY="gsk_ваш_ключ"' >> ~/.bashrc
source ~/.bashrc
codereview --init groq
codereview ваш_файл.py
Всё. Вы запускаете проверку кода с ИИ.
В первый раз? Просто введите
codereviewбез аргументов, и он проведёт вас через всю настройку.
codereview app.py
codereview src/auth.py src/db.py src/api.py
git add .
codereview --staged
codereview --last 3
codereview --diff origin/main
cat suspicious_code.py | codereview --stdin
codereview app.py --model gpt-4
codereview app.py --provider ollama
codereview --setup
codereview работает с любым API, совместимым с OpenAI. Выбирайте то, что подходит вам:
export GROQ_API_KEY="gsk_ваш_ключ"
codereview --init groq
# 1. Установите Ollama
# Mac: Скачайте с https://ollama.com
# Linux: curl -fsSL https://ollama.com/install.sh | sh
# 2. Скачайте модель
ollama pull llama3
# 3. Запустите сервер
ollama serve
# 4. Инициализируйте (API-ключ не нужен)
codereview --init ollama
export OPENAI_API_KEY="sk-..."
codereview --init openai
export ANTHROPIC_API_KEY="sk-ant-..."
codereview --init anthropic
Конфигурация хранится в ~/.codereview/config.json:
{
"provider": "groq",
"model": "llama-3.3-70b-versatile",
"base_url": "https://api.groq.com/openai/v1",
"max_tokens": 2048,
"temperature": 0.2
}
API-ключи никогда не хранятся в файле конфигурации. Они читаются только из переменных окружения.
export CODEREVIEW_API_KEY="любой-ключ" # Универсальное переопределение
export CODEREVIEW_MODEL="gpt-4" # Переопределение модели
codereview app.py --model gpt-4 --provider openai
Ваш код --> codereview CLI --> LLM API --> Структурированный вывод в терминал
(файл/diff) (построитель промпта) (любой провайдер) (цветные результаты)
$ codereview api/auth.py
Score: 3/10
🔴 CRITICAL — Жёстко закодированный JWT-секрет
Секретный ключ жёстко закодирован на строке 12.
Предложение: Используйте переменную окружения: os.environ["JWT_SECRET"]
🔴 CRITICAL — Отсутствие хеширования паролей
Пароли хранятся в открытом виде на строке 34.
Предложение: Используйте bcrypt: bcrypt.hashpw(password, bcrypt.gensalt())
🟡 WARNING — Токен никогда не истекает
У JWT-токенов не задан срок действия.
Предложение: Добавьте exp claim с timedelta
$ git add .
$ codereview --staged
Score: 8/10
🔵 INFO — Рассмотрите возможность обработки ошибок
Новая конечная точка API не перехватывает ConnectionError.
Предложение: Оберните в try/except с логикой повтора.
$ codereview --last 3
Score: 9/10
⚪ STYLE — Непоследовательное именование
Смесь snake_case и camelCase в utils.py
Предложение: Придерживайтесь snake_case согласно PEP 8.
Добавьте в ваш workflow GitHub Actions:
name: Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- run: pip install ai-code-review
- run: codereview --diff origin/main
env:
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
ai-code-review/
├── codereview/
│ ├── __init__.py # Версия
│ ├── cli.py # Интерфейс командной строки + настройка при первом запуске
│ ├── reviewer.py # Вызовы LLM API + разбор ответов
│ ├── formatter.py # Форматирование вывода в терминале с помощью rich
│ ├── git_utils.py # Утилиты для извлечения git diff/файлов
│ └── config.py # Управление конфигурацией + обработка API-ключей
├── tests/
│ ├── test_reviewer.py # Тесты разбора проверок
│ └── test_git_utils.py # Тесты утилит git
├── setup.py
├── pyproject.toml
├── LICENSE
└── README.md
Вы не установили API-ключ. Самый быстрый бесплатный вариант:
# 1. Получите бесплатный ключ на https://console.groq.com
# 2. Установите его:
export GROQ_API_KEY="gsk_ваш_ключ"
codereview --init groq
Ваш HTTP-клиент блокируется Cloudflare. Убедитесь, что всё обновлено:
git pull
pip install -e .
Модель устарела. Повторно инициализируйте, чтобы получить последнюю модель:
codereview --init groq
Сервер Ollama не запущен:
ollama serve
Затем попробуйте снова в новом терминале.
Зависимости не установились. Выполните:
pip install rich requests
Или переустановите:
pip install -e .
Установка не добавила его в PATH. Используйте напрямую:
python3 -m codereview.cli ваш_файл.py
Или создайте alias:
echo 'alias codereview="python3 -m codereview.cli"' >> ~/.zshrc
source ~/.zshrc
PR приветствуются! Проект активно поддерживается.
git clone https://github.com/jaydendancer12/ai-code-review.git
cd ai-code-review
pip install -e .
pip install pytest
pytest -v
MIT — см. LICENSE
Если codereview спас вас от ошибки, поставьте ему ⭐
Создано Jayden Dancer
| Серьёзность | Что находит | Пример |
|---|
| 🔴 Критическая | Уязвимости безопасности, потеря данных, сбои | SQL-инъекции, eval() на пользовательском вводе, жёстко закодированные секреты |
| 🟡 Предупреждение | Ошибки, отсутствие обработки ошибок, состояния гонки | Деление на ноль, необработанные исключения, утечки ресурсов |
| 🔵 Информация | Улучшения производительности, лучшие паттерны | Излишние выделения памяти, отсутствие кеширования, N+1 запросы |
| ⚪ Стиль | Именование, форматирование, документация | Отсутствие docstring, непоследовательное именование, мёртвый код |