Руководство по CLI¶
Полная документация по интерфейсу командной строки для CodeGraph.
Содержание¶
- Краткий справочник
- CLI codegraph
- Команда импорта
- Управление проектами
- GoCPG CLI
- CLI шаблонов
- CLI API-сервера
- CLI security-audit
- Полит аудит
- Быстрое сканирование
- Сканирование настроек
- Сканирование секретов
- CLI patch-review
- Команда analyze
- Просмотр diff
- Просмотр PR в GitHub
- Просмотр MR в GitLab
- Инструменты тестирования и анализа
- CLI редактирования файлов (S17)
- CLI оптимизации кода (S18)
- CLI проверки стандартов (S19)
- CLI зависимостей (S20)
- CLI композиции
- CLI генерации документации
- Переменные окружения
- Коды завершения
- Интеграция с CI/CD
- Устранение неполадок
Краткий справочник¶
| Инструмент | Назначение | Типичное использование |
|---|---|---|
| python -m src.api.cli run | Запуск сервера REST API | Сервер для разработки и производства |
| codegraph import | Импорт проекта в CPG | Клонирование репозитория + создание CPG |
| codegraph projects | Управление импортированными проектами | Список, активация, удаление проектов |
| security-audit full | Аудит безопасности | Сканирование проекта на уязвимости |
| patch-review analyze | Проверка кода | Анализ кодовой базы на наличие проблем |
| patch-review github | Проверка PR | Анализ запрос на слияние’ов в GitHub |
| generate-docs full | Генерация документации | Генерация полной документации + индексация в ChromaDB |
| codegraph gocpg | Операции GoCPG | Статистика CPG, запросы, ветки, хуки, мониторинг |
| codegraph patterns | Структурный анализ шаблонов | Сканирование правил, поиск шаблонов, применение исправлений |
CLI codegraph¶
Основной интерфейс командной строки для импорта проектов и управления системой CodeGraph.
Установка¶
# Из директории codegraph
pip install -e .
# Или запуск напрямую
python -m src.cli.import_commands [команда] [опции]
Команда импорта¶
Импорт проекта из репозитория Git или локального пути.
codegraph import [опции]
Опции:
| Опция | Описание | По умолчанию |
|---|---|---|
| –repo | URL Git-репозитория | - |
| –path | Локальный путь к исходному коду | - |
| –language | Язык программирования (автоопределение, если не указан) | авто |
| –branch | Ветка Git для клонирования | main |
| –shallow | Использовать неглубокое клонирование | true |
| –include | Включаемые пути (несколько значений) | все |
| –exclude | Исключаемые пути (несколько значений) | нет |
| –mode | Режим импорта:full,selective,incremental | full |
| –workspace | Путь к рабочей области CPG | авто |
| –domain-name | Пользовательское доменное имя | авто |
| –group | Имя группы проекта | default |
| –memory | Объём памяти GoCPG в ГБ | 16 |
| –batch-size | Размер пакета DuckDB | 10000 |
| –docker | Использовать Docker для GoCPG | false |
| –no-docs | Пропустить импорт документации | false |
| –no-plugin | Пропустить создание плагина домена | false |
Примеры:
# Импорт из GitHub
codegraph import --repo https://github.com/postgres/postgres --branch REL_17_STABLE
# Импорт локального кода с использованием Docker
codegraph import --path ./myproject --docker
# Импорт с указанием языка
codegraph import --repo https://github.com/org/repo --language python
# Выборочный импорт (только указанные пути)
codegraph import --path ./code --mode selective --include src/core src/api
# Импорт в определённую группу
codegraph import --repo https://github.com/org/repo --group security-team
Управление проектами¶
Управление импортированными проектами.
codegraph projects [подкоманда] [опции]
Список проектов¶
codegraph projects list [опции]
| Опция | Описание |
|---|---|
| –group | Фильтрация по имени группы |
| –language | Фильтрация по языку |
| –active | Показывать только активные проекты |
Примеры:
# Список всех проектов
codegraph projects list
# Список проектов в группе
codegraph projects list --group security-team
# Показать только активные проекты
codegraph projects list --active
Активация проекта¶
codegraph projects activate <имя> [--group <группа>]
Удаление проекта¶
codegraph projects delete <имя> [опции]
| Опция | Описание |
|---|---|
| –group | Имя группы проекта |
| –delete-files | Также удалить файлы CPG и DuckDB |
Информация о проекте¶
codegraph projects info <имя> [--group <группа>]
Команды пошагового выполнения¶
Выполнение отдельных шагов конвейера.
# Клонирование репозитория
codegraph clone --repo <url> [--branch main] [--shallow] [--depth 1] [--output dir]
# Определение языка программирования
codegraph detect --path <путь_к_исходникам>
# Создание CPG (вывод DuckDB напрямую через GoCPG)
codegraph cpg --path <путь_к_исходникам> [--language c] [--output db.duckdb]
# Проверка базы данных CPG
codegraph validate --db <путь_duckdb>
# Список поддерживаемых языков
codegraph languages
Поддерживаемые языки:
| Язык | Расширения |
|---|---|
| c | .c, .h |
| cpp | .cpp, .hpp, .cc, .cxx |
| python | .py |
| java | .java |
| go | .go |
| javascript | .js, .jsx |
| typescript | .ts, .tsx |
| kotlin | .kt, .kts |
| csharp | .cs |
| php | .php |
| 1c | .bsl, .os |
GoCPG CLI¶
Прямой доступ к операциям GoCPG через унифицированную обёртку на Python.
codegraph gocpg <подкоманда> [опции]
gocpg stats — Статистика CPG¶
codegraph gocpg stats [--db ПУТЬ]
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
Отображает общее количество узлов, рёбер, методов, вызовов, файлов, объявлений типов и размер базы данных.
gocpg query — Выполнение SQL-запроса¶
codegraph gocpg query "SQL" [--db ПУТЬ]
| Опция | По умолчанию | Описание |
|---|---|---|
sql |
(обязательно) | Строка SQL-запроса |
--db |
из конфига | Путь к файлу DuckDB |
Пример:
codegraph gocpg query "SELECT COUNT(*) FROM nodes_method"
codegraph gocpg query "SELECT full_name FROM nodes_method LIMIT 10" --db data/projects/postgres.duckdb
gocpg frontends — Список языковых модулей¶
codegraph gocpg frontends
Выводит список всех доступных языковых модулей с поддерживаемыми расширениями файлов и статусом доступности.
gocpg metrics — Валидация метрик¶
codegraph gocpg metrics [--input ПУТЬ] [--verbose]
| Опция | По умолчанию | Описание |
|---|---|---|
--input, -i |
. |
Исходный файл или директория |
--verbose, -v |
false |
Показать детали по каждому файлу |
gocpg branches — Управление ветками¶
codegraph gocpg branches list [--db ПУТЬ]
codegraph gocpg branches switch ИМЯ [--db ПУТЬ]
codegraph gocpg branches prune [--input ПУТЬ] [--db ПУТЬ]
| Подкоманда | Описание |
|---|---|
list |
Список отслеживаемых веток с коммитом SHA, количеством файлов/узлов и статусом активности |
switch ИМЯ |
Переключение активной ветки CPG |
prune |
Удаление устаревших веток, отсутствующих в git-репозитории |
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
--input, -i |
. |
Путь к git-репозиторию (для prune) |
gocpg hooks — Управление git-хуками¶
codegraph gocpg hooks install [--repo ПУТЬ] [--db ПУТЬ] [--hooks ТИПЫ] [--lang ЯЗЫК]
codegraph gocpg hooks uninstall [--repo ПУТЬ]
codegraph gocpg hooks status [--repo ПУТЬ]
| Подкоманда | Описание |
|---|---|
install |
Установка git-хуков для автоматического обновления CPG при коммите |
uninstall |
Удаление установленных git-хуков |
status |
Показать текущий статус установки хуков |
| Опция | По умолчанию | Описание |
|---|---|---|
--repo |
. |
Путь к репозиторию |
--db |
из конфига | Путь к файлу DuckDB |
--hooks |
все | Типы хуков через запятую |
--lang |
автоопределение | Языковой модуль |
gocpg watch — Мониторинг файлов¶
codegraph gocpg watch --input ПУТЬ [--output ПУТЬ] [--lang ЯЗЫК] [--debounce МС] [--webhook URL]
| Опция | По умолчанию | Описание |
|---|---|---|
--input, -i |
(обязательно) | Директория для мониторинга |
--output, -o |
из конфига | Путь к файлу DuckDB |
--lang, -l |
автоопределение | Языковой модуль |
--debounce |
500 |
Интервал подавления дребезга в миллисекундах |
--webhook |
нет | URL вебхука для уведомлений об изменениях |
Запускает фоновый процесс, который отслеживает изменения файлов и инкрементально обновляет CPG. Нажмите Ctrl+C для остановки.
gocpg index — Создание/пересоздание индексов¶
codegraph gocpg index [--db ПУТЬ]
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
Создаёт или пересоздаёт индексы DuckDB для оптимизации производительности запросов.
gocpg submodules — Управление подмодулями¶
codegraph gocpg submodules list [--db ПУТЬ]
codegraph gocpg submodules prune [--input ПУТЬ] [--db ПУТЬ]
| Подкоманда | Описание |
|---|---|
list |
Список отслеживаемых подмодулей с коммитом SHA и статусом инициализации |
prune |
Удаление устаревших подмодулей, отсутствующих в репозитории |
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
--input, -i |
. |
Путь к git-репозиторию (для prune) |
CLI шаблонов¶
Структурный поиск шаблонов, сканирование и перезапись с помощью YAML-правил и произвольных шаблонов.
codegraph patterns <подкоманда> [опции]
patterns scan — Запуск YAML-правил по CPG¶
codegraph patterns scan [опции]
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
--rules |
из конфига | Пути к директориям с правилами (несколько) |
--rule |
все | Запуск только указанного правила по ID |
--severity |
все | Минимальная серьёзность: error, warning, info, hint |
--incremental |
false |
Включить инкрементальное вычисление |
--format |
text |
Формат вывода: json, sarif, text |
--output |
stdout | Записать результат в файл |
Примеры:
# Сканирование со всеми правилами
codegraph patterns scan
# Сканирование конкретной базы данных с фильтром серьёзности
codegraph patterns scan --db data/projects/postgres.duckdb --severity warning
# Сканирование конкретным правилом, вывод SARIF
codegraph patterns scan --rule no-unchecked-malloc --format sarif --output findings.sarif
# Инкрементальное сканирование (только изменённые файлы)
codegraph patterns scan --incremental
patterns search — Произвольный структурный поиск шаблонов¶
codegraph patterns search "<паттерн>" --lang ЯЗЫК [опции]
| Опция | По умолчанию | Описание |
|---|---|---|
шаблон |
(обязательно) | Строка структурного шаблона (например, "malloc($SIZE)") |
--lang |
(обязательно) | Язык исходного кода (c, go, python, javascript и т.д.) |
--db |
из конфига | Путь к файлу DuckDB |
--max-results |
100 |
Максимальное количество результатов |
Примеры:
# Поиск непроверенных вызовов malloc в C
codegraph patterns search "malloc($SIZE)" --lang c
# Поиск конкатенации SQL-строк в Python
codegraph patterns search "\"SELECT \" + $VAR" --lang python --max-results 50
patterns fix — Применение исправлений из шаблонов YAML-правил¶
codegraph patterns fix [опции]
| Опция | По умолчанию | Описание |
|---|---|---|
--db |
из конфига | Путь к файлу DuckDB |
--rules |
из конфига | Пути к директориям с правилами (несколько) |
--rule |
все | Запуск только указанного правила по ID |
--dry-run |
false |
Предпросмотр исправлений без применения |
Примеры:
# Предпросмотр всех исправлений (пробный запуск)
codegraph patterns fix --dry-run
# Применить исправления для конкретного правила
codegraph patterns fix --rule use-safe-string-concat
# Применить исправления из пользовательской директории правил
codegraph patterns fix --rules ./my-rules --dry-run
patterns list — Список загруженных правил¶
codegraph patterns list [--db ПУТЬ]
Выводит все правила шаблонов, загруженные в базу данных CPG, с их ID, серьёзностью, категорией, языком и наличием шаблона исправления.
patterns stats — Статистика шаблонов¶
codegraph patterns stats [--db ПУТЬ]
Отображает агрегированную статистику сопоставления шаблонов: общее количество находок, разбивка по серьёзности, категории и правилу.
patterns generate — Генерация YAML-правила с помощью LLM¶
codegraph patterns generate "<описание>" --lang ЯЗЫК [--output ФАЙЛ]
| Опция | По умолчанию | Описание |
|---|---|---|
описание |
(обязательно) | Описание правила на естественном языке |
--lang |
(обязательно) | Целевой язык |
--output |
stdout | Записать YAML в файл |
Примеры:
# Сгенерировать правило по описанию
codegraph patterns generate "найти непроверенные вызовы malloc" --lang c
# Сгенерировать и сохранить в файл
codegraph patterns generate "обнаружить SQL-инъекцию через конкатенацию строк" --lang python --output sql_injection.yaml
CLI-сервера API¶
Модуль: src.api.cli
python -m src.api.cli <команда> [опции]
run— Запуск сервера API¶
python -m src.api.cli run [опции]
| Опция | По умолчанию | Описание |
|---|---|---|
| –host | 0.0.0.0 | IP-адрес, к которому привязываться |
| –port | 8000 | Порт для прослушивания |
| –workers | 1 | Количество рабочих процессов uvicorn |
| –reload | false | Включить автоматическую перезагрузку (для разработки) |
| –log-level | info | Уровень логирования (debug, info, warning, error) |
Примеры:
# Запуск сервера с параметрами по умолчанию
python -m src.api.cli run
# Режим разработки с автоперезагрузкой
python -m src.api.cli run --reload --log-level debug
# Работа в рабочей среде с несколькими рабочими процессами
python -m src.api.cli run --host 0.0.0.0 --port 8000 --workers 4
init-db— Инициализация базы данных¶
python -m src.api.cli init-db
migrate— Выполнить миграции¶
python -m src.api.cli migrate [--revision REVISION]
create-admin— Создать администратора¶
python -m src.api.cli create-admin --username ИМЯ_ПОЛЬЗОВАТЕЛЯ --password ПАРОЛЬ [--email EMAIL]
CLI security-audit¶
Консольная утилита для сканирования безопасности проектов на Python/Django.
Модуль: src.cli.security_audit
python -m src.cli.security_audit <команда> [опции]
Полит аудит¶
Запуск полного аудита безопасности с поддержкой нескольких форматов вывода.
security-audit full --path <путь_к_проекту> [опции]
| Опция | Короткая | Описание | По умолчанию |
|---|---|---|---|
| –path | -p | Путь к проекту для аудита | обязательно |
| –output | -o | Директория для сохранения отчётов | ./security_reports |
| –format | -f | Формат(ы) вывода: json, markdown, sarif, all | json markdown sarif |
| –exclude-dirs | Дополнительные директории для исключения | нет | |
| –no-cpg | Пропустить анализ на основе CPG (быстрее) | false | |
| –verbose | -v | Подробный вывод | false |
Примеры:
# Полный аудит со всеми форматами
security-audit full --path ./myproject
# Только JSON-вывод
security-audit full --path ./myproject --format json
# Исключение директорий
security-audit full --path ./myproject --exclude-dirs vendor third_party
# Быстрое сканирование по файлам (без CPG) {#quick-scan}
security-audit full --path ./myproject --no-cpg
Вывод:
Аудит генерирует отчёты в указанной директории:
- security_audit_YYYYMMDD_HHMMSS.json
- security_audit_YYYYMMDD_HHMMSS.md
- security_audit_YYYYMMDD_HHMMSS.sarif
Быстрое сканирование¶
Быстрое сканирование по файлам без полного анализа CPG.
security-audit quick --path <путь_к_проекту> [--output <файл>]
Сканирование настроек¶
Проверка файла настроек Django на наличие проблем безопасности.
security-audit settings --path <путь_к_настройкам>
Проверки: - DEBUG = True в рабочей среде - Слабый SECRET_KEY - Настройка ALLOWED_HOSTS - CSRF_COOKIE_SECURE - SESSION_COOKIE_SECURE - SECURE_SSL_REDIRECT - Жёстко прописанные учётные данные базы данных
Сканирование секретов¶
Поиск жёстко прописанных секретов и учётных данных.
security-audit secrets --path <путь_к_проекту>
Обнаруживает: - Ключи API (AWS, GCP, Azure, GitHub и др.) - Приватные ключи (RSA, SSH) - Строки подключения к базам данных - Секреты JWT - Токены OAuth - Общие пароли в коде
Уровни серьёзности уязвимостей¶
| Серьёзность | Иконка | Описание |
|---|---|---|
| Критическая | [X] | Требует немедленных действий |
| Высокая | [!] | Необходимо устранить до развёртывания |
| Средняя | [~] | Должна быть исправлена |
| Низкая | [o] | Незначительные проблемы |
| Информационная | [i] | Информационные сведения |
Исключённые директории (по умолчанию)¶
Сканер автоматически исключает:
- __pycache__, .git
- .venv, venv, env
- node_modules
- .tox, .pytest_cache, .mypy_cache
- migrations
- static, media
- dist, build
patch-review CLI¶
Автоматический анализ кода с использованием анализа графа свойств кода (CPG).
Модуль: src.patch_review.cli
python -m src.patch_review.cli [команда] [опции]
Команда Analyze¶
Запускает анализ безопасности и неиспользуемого кода для всей кодовой базы.
patch-review analyze [опции]
| Опция | Короткая | Описание | По умолчанию |
|---|---|---|---|
| –type | -t | Тип анализа:security,dead-code,all | all |
| –severity | -s | Минимальный уровень серьёзности:critical,high,medium,low,all | all |
| –patterns | -p | Список ID шаблонов через запятую для проверки | все шаблоны |
| –limit | -l | Максимум найденных уязвимостей на шаблон | 50 |
Примеры:
# Полный анализ (безопасность + неиспользуемый код)
patch-review analyze --db data/projects/postgres.duckdb
# Только безопасность, критическая серьёзность
patch-review analyze --type security --severity critical
# Конкретные шаблоны
patch-review analyze --patterns SQL_INJECTION,BUFFER_OVERFLOW,DEAD_CODE
Просмотр изменений (Diff Review)¶
Анализ изменений из файла в формате unified diff.
patch-review diff [файл] [опции]
| Опция | Описание |
|---|---|
| file | Путь к файлу diff (или-для stdin) |
| –dead-code | Включить анализ неиспользуемого кода |
| –security-only | Выполнять только анализ безопасности |
Примеры:
# Просмотр файла diff {#diff-review}
patch-review diff changes.diff
# Чтение из stdin
git diff | patch-review diff -
# С анализом неиспользуемого кода
patch-review diff changes.diff --dead-code
Просмотр GitHub PR¶
Получение и анализ запрос на слияние из GitHub.
patch-review github <номер_pr> [опции]
| Опция | Описание |
|---|---|
| –owner | Владелец репозитория (или переменная окружения GITHUB_OWNER) |
| –repo | Название репозитория (или переменная окружения GITHUB_REPO) |
| –token | Токен GitHub (или переменная окружения GITHUB_TOKEN) |
| –post-review | Опубликовать комментарии анализа в PR |
| –dead-code | Включить анализ неиспользуемого кода |
Пример:
patch-review github 123 --owner myorg --repo myrepo --token $GITHUB_TOKEN --post-review
Просмотр GitLab MR¶
Получение и анализ Merge Request из GitLab.
patch-review gitlab <mr_iid> [опции]
| Опция | Описание |
|---|---|
| –project | ID или путь проекта (или переменная окружения GITLAB_PROJECT_ID) |
| –token | Токен GitLab (или переменная окружения GITLAB_TOKEN) |
| –post-review | Опубликовать комментарии анализа в MR |
Глобальные опции¶
| Опция | Короткая | Описание | По умолчанию |
|---|---|---|---|
| –db | -d | Путь к базе данных DuckDB CPG | data/projects/postgres.duckdb |
| –output | -o | Формат вывода:json,markdown,summary,score | markdown |
| –output-file | -f | Записать результат в файл | stdout |
| –verbose | -v | Включить подробное логирование | false |
| –quiet | -q | Выводить только результат, без служебных сообщений | false |
| –security-threshold | Минимальный балл безопасности для прохождения | 60.0 | |
| –block-on-critical | Блокировать, если найдены критические уязвимости | true |
Инструменты тестирования и анализа¶
demo_benchmark.py¶
Демонстрирует работу тестовой платформы на примере синтетических результатов поиска.
python examples/demo_benchmark.py
Возможности: - Имитация векторного, графового и гибридного поиска - Демонстрация метрик P@K, R@K, F1@K, MRR, NDCG - Воспроизводимость результатов благодаря фиксированному seed’у генератора случайных чисел
demo_patch_review.py¶
Демонстрирует конвейер автоматического анализа изменений (изменений).
python examples/demo_patch_review.py [--db data/projects/postgres.duckdb]
Выходные файлы:
- demo_review_output.json — структурированные результаты анализа
- demo_review_output.md — отчёт в формате Markdown
tests/benchmark/run_benchmark.py¶
Полноценный запуск тестирования для множества сценариев.
python tests/benchmark/run_benchmark.py [ОПЦИИ]
| Аргумент | Описание |
|---|---|
| –quick | Быстрое тестирование (подмножество запросов) |
| –scenario N | Запуск конкретного сценария (1–21) |
| –all-scenarios | Запуск всех 21 сценариев |
| –output DIR | Каталог для сохранения результатов |
CLI редактирования файлов (S17)¶
Программное редактирование кода с точным нацеливанием и поддержкой отмены.
Модуль: src.cli.edit_commands
codegraph edit <подкоманда> [опции]
Поиск цели¶
Поиск функции, класса или метода для редактирования.
codegraph edit find --target <имя> [опции]
| Опция | Описание |
|---|---|
--target |
Имя функции/класса/метода для поиска |
--file |
Ограничить поиск конкретным файлом |
--type |
Тип сущности: function, class, method |
Примеры:
# Найти функцию
codegraph edit find --target heap_insert
# Найти в конкретном файле
codegraph edit find --target process_query --file src/executor/executor.c
# Найти класс
codegraph edit find --target UserService --type class
Применение редактирования¶
Применение изменений кода к цели.
codegraph edit apply --file <файл> --target <цель> --new-code <код> [опции]
| Опция | Описание |
|---|---|
--file |
Файл, содержащий цель |
--target |
Имя функции/класса/метода |
--new-code |
Новый код для вставки (или путь к файлу через @) |
--preview |
Показать diff без применения |
Примеры:
# Применить встроенный код
codegraph edit apply --file src/utils.py --target validate_input --new-code "def validate_input(data): return data.strip()"
# Применить из файла
codegraph edit apply --file src/utils.py --target validate_input --new-code @new_function.py
# Предпросмотр изменений
codegraph edit apply --file src/utils.py --target validate_input --new-code @fix.py --preview
Переименование¶
Переименование символа по всей кодовой базе.
codegraph edit rename --old <имя> --new <имя> [опции]
| Опция | Описание |
|---|---|
--old |
Текущее имя символа |
--new |
Новое имя символа |
--scope |
Ограничить область конкретным путём |
Примеры:
# Переименовать функцию
codegraph edit rename --old processData --new process_data
# Переименовать в пределах области
codegraph edit rename --old handler --new request_handler --scope src/api/
Отмена и история¶
# Показать историю редактирований
codegraph edit history
# Отменить последнее редактирование
codegraph edit undo
# Отменить конкретное редактирование по ID
codegraph edit undo --id edit_abc123
CLI оптимизации кода (S18)¶
Оптимизация кода на основе ИИ с рабочим процессом утверждения.
Модуль: src.cli.optimize_commands
codegraph optimize <подкоманда> [опции]
Анализ¶
Анализ кода на возможности оптимизации.
codegraph optimize analyze <путь> [опции]
| Опция | Описание |
|---|---|
--performance |
Фокус на оптимизации производительности |
--security |
Фокус на улучшениях безопасности |
--readability |
Фокус на улучшениях читаемости |
--all |
Анализ всех категорий (по умолчанию) |
Примеры:
# Анализ директории
codegraph optimize analyze src/
# Анализ с фокусом на производительность
codegraph optimize analyze src/core/ --performance
# Безопасность + читаемость
codegraph optimize analyze src/api/ --security --readability
Просмотр предложений¶
# Список всех предложений
codegraph optimize list
# Показать детали конкретного предложения
codegraph optimize show --id <suggestion_id>
Утверждение/Отклонение¶
# Утвердить предложение
codegraph optimize approve --id <suggestion_id>
# Отклонить с причиной
codegraph optimize reject --id <suggestion_id> --reason "Не применимо к нашему случаю"
Применение и отмена¶
# Применить все утверждённые предложения
codegraph optimize apply
# Отменить последнюю применённую оптимизацию
codegraph optimize undo
CLI проверки стандартов (S19)¶
Проверка стандартов на основе справочных документов YAML.
Модуль: src.cli.standards_commands
codegraph standards <подкоманда> [опции]
Импорт и валидация¶
# Импортировать документ стандартов
codegraph standards import <document.yaml>
# Валидировать синтаксис документа
codegraph standards validate <document.yaml>
Список правил¶
# Список всех импортированных правил
codegraph standards list
# Список по категории
codegraph standards list --category security
Проверка кода¶
codegraph standards check <путь> [опции]
| Опция | Описание |
|---|---|
--severity |
Фильтр: error, warning, info |
--category |
Фильтр по категории (security, naming и т.д.) |
Примеры:
# Проверить директорию
codegraph standards check src/
# Только ошибки
codegraph standards check src/ --severity error
# Только правила безопасности
codegraph standards check src/ --category security
Отчёт и очистка¶
# Сгенерировать отчёт о нарушениях
codegraph standards report src/ --output violations.json
# Очистить все импортированные правила
codegraph standards clear
CLI зависимостей (S20)¶
Анализ зависимостей на уязвимости, обновления и соответствие.
Модуль: src.cli.deps_commands
codegraph deps <подкоманда> [опции]
Сканирование зависимостей¶
codegraph deps scan [опции]
| Опция | Описание |
|---|---|
--project |
Путь к проекту (по умолчанию: текущая директория) |
--include-dev |
Включить dev-зависимости |
--output |
Файл для вывода JSON-результатов |
Примеры:
# Сканировать текущий проект
codegraph deps scan
# Сканировать указанный путь с dev-зависимостями
codegraph deps scan --project ./myapp --include-dev
Аудит уязвимостей¶
codegraph deps audit [опции]
| Опция | Описание |
|---|---|
--severity |
Фильтр: critical, high, medium, low |
--fail-on |
Выход с ошибкой при указанном уровне |
--report |
Файл для детального отчёта |
Примеры:
# Полный аудит
codegraph deps audit
# Только критические и высокие
codegraph deps audit --severity critical,high
# Режим CI/CD (ошибка при high)
codegraph deps audit --fail-on high
Устаревшие пакеты¶
# Проверить устаревшие пакеты
codegraph deps outdated
# Только прямые зависимости
codegraph deps outdated --direct-only
Проверка лицензий¶
# Проверить все лицензии
codegraph deps licenses
# Проверить по списку разрешённых
codegraph deps licenses --allowed MIT,Apache-2.0,BSD-3-Clause
# Ошибка при GPL
codegraph deps licenses --fail-on GPL-3.0
Генерация SBOM¶
# Сгенерировать CycloneDX SBOM
codegraph deps sbom --format cyclonedx --output sbom.json
# Сгенерировать SPDX с уязвимостями
codegraph deps sbom --format spdx --output sbom.spdx --include-vulnerabilities
Граф зависимостей¶
# Показать дерево зависимостей
codegraph deps tree
# Показать почему пакет установлен
codegraph deps why <package>
# Экспортировать граф
codegraph deps graph --format dot --output deps.dot
CLI композиции¶
Оркестрация нескольких сценариев для комплексного анализа.
Модуль: src.cli.composition_commands
codegraph composition <подкоманда> [опции]
Запуск композитного запроса¶
codegraph composition run "<запрос>" [опции]
| Опция | Описание |
|---|---|
-o, --orchestrator |
Сценарий-оркестратор: s18, s19 |
-s, --scenarios |
Дополнительные сценарии для включения |
Примеры:
# Запуск с оркестратором S18
codegraph composition run "Оптимизировать модуль аутентификации" -o s18
# Запуск с оркестратором S19 и дополнительными сценариями
codegraph composition run "Проверить по company_standards.yaml" -o s19 -s s08
# Композиция нескольких сценариев
codegraph composition run "Полный аудит безопасности" -o s18 -s s02 -s s08
Применение находок¶
codegraph composition apply <finding_id> -s <session_id> [опции]
| Опция | Описание |
|---|---|
-s, --session |
ID сессии из запуска композиции |
--preview |
Предпросмотр изменений без применения |
Управление конфликтами¶
# Проверить конфликты между находками
codegraph composition conflicts -s <session_id>
Конфигурация¶
# Показать конфигурацию композиции
codegraph composition config
# Список доступных сценариев-оркестраторов
codegraph composition scenarios
Переменные окружения¶
| Переменная | Описание | Используется |
|---|---|---|
| DATABASE_URL | URL подключения к PostgreSQL | сервер API |
| GIGACHAT_CREDENTIALS | Учётные данные для API GigaChat | поставщик LLM |
| OPENAI_API_KEY | Ключ API OpenAI | поставщик LLM |
| GOCPG_PATH | Путь к бинарному файлу GoCPG | инструменты импорта |
| DUCKDB_PATH | Путь к базе данных DuckDB | все инструменты |
| LOG_LEVEL | Уровень логирования по умолчанию | все инструменты |
| GITHUB_TOKEN | Токен API GitHub | patch-review |
| GITHUB_OWNER | Владелец репозитория по умолчанию | patch-review |
| GITHUB_REPO | Название репозитория по умолчанию | patch-review |
| GITLAB_TOKEN | Токен API GitLab | patch-review |
| GITLAB_PROJECT_ID | Идентификатор проекта GitLab по умолчанию | patch-review |
Коды завершения¶
codegraph¶
| Код | Значение |
|---|---|
| 0 | Команда успешно выполнена |
| 1 | Произошла ошибка |
| 2 | Недопустимые аргументы |
security-audit¶
| Код | Значение |
|---|---|
| 0 | Аудит успешно завершён |
| 1 | Ошибка или критические проблемы |
patch-review¶
| Код | Значение |
|---|---|
| 0 | Просмотр одобрен / Критические проблемы отсутствуют |
| 1 | Требуются изменения / Проблемы высокой серьёзности |
| 2 | Объединение заблокировано / Критические проблемы |
Интеграция CI/CD¶
GitHub Actions¶
name: Анализ безопасности
on: [push, pull_request]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Настройка Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Установка зависимостей
run: pip install -e .
- name: Аудит безопасности
run: |
security-audit full --path . --format sarif --output ./reports
- name: Загрузка SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: reports/security_audit_*.sarif
- name: Проверка изменений
if: github.event_name == 'pull_request'
run: |
patch-review analyze --type security --severity high --output json > analysis.json
exit_code=$?
if [ $exit_code -eq 2 ]; then
echo "Обнаружены критические уязвимости!"
exit 1
fi
GitLab CI¶
stages:
- security
security_scan:
stage: security
script:
- pip install -e .
- security-audit full --path . --format json --output ./reports
- patch-review analyze --type security --severity critical
artifacts:
reports:
sast: reports/security_audit_*.json
allow_failure: false
Устранение неполадок¶
Ошибка подключения к базе данных¶
# Проверьте, существует ли база данных и доступна ли для чтения
ls -la data/projects/postgres.duckdb
# Попробуйте с указанием полного пути
patch-review analyze --db /полный/путь/до/data/projects/postgres.duckdb
Нет результатов¶
# Проверьте с подробным логированием
patch-review analyze --verbose
# Понизьте порог серьёзности
patch-review analyze --severity all
Проблемы с GoCPG¶
# Проверьте статистику GoCPG
codegraph gocpg stats
# Убедитесь, что бинарный файл GoCPG доступен
codegraph gocpg frontends
Ошибки импорта¶
# Проверьте поддерживаемые языки
codegraph languages
# Попробуйте с использованием Docker
codegraph import --path ./code --docker
# Проверьте статус заданий импорта
codegraph jobs --status failed
CLI генерации документации¶
Пакетная генерация документации из данных CPG с индексацией в ChromaDB для семантического поиска.
Модуль: src.cli.generate_docs
python -m src.cli.generate_docs <команда> [опции]
Полная генерация¶
Генерация всех 8 разделов документации, сохранение на диск и индексация в ChromaDB.
python -m src.cli.generate_docs full [опции]
| Опция | Короткая | Описание | По умолчанию |
|---|---|---|---|
--output |
-o |
Директория для сохранения | ./docs/generated |
--language |
-l |
Язык: en, ru |
en |
--no-chromadb |
Пропустить индексацию в ChromaDB | false |
|
--verbose |
-v |
Подробный вывод | false |
--sections |
Конкретные разделы для генерации | все |
Примеры:
# Сгенерировать полную документацию на английском
python -m src.cli.generate_docs full --output ./docs/generated
# Сгенерировать на русском, без ChromaDB
python -m src.cli.generate_docs full --language ru --no-chromadb
# Сгенерировать только определённые разделы
python -m src.cli.generate_docs full --sections mvd_doc coverage_doc diagram_doc
Генерируемые разделы (по порядку):
| Раздел | Описание |
|---|---|
mvd_doc |
Обзор проекта (минимальная документация) |
module_overview |
Документация на уровне модулей |
function_doc |
Документация на уровне функций |
pipeline_doc |
Документация потоков данных |
business_logic_doc |
Бизнес-правила (использует LLM) |
type_doc |
Статистика типов и конверсий |
coverage_doc |
Метрики покрытия документацией |
diagram_doc |
Диаграммы графа вызовов (Mermaid) |
Один раздел¶
Генерация одного раздела документации.
python -m src.cli.generate_docs section <имя> [--language en|ru]
Переиндексация существующих файлов¶
Переиндексация ранее сгенерированных файлов документации в ChromaDB.
python -m src.cli.generate_docs index --path <директория> [--language en|ru]
Статистика¶
Показать статистику коллекции ChromaDB для сгенерированной документации.
python -m src.cli.generate_docs stats
Команда exec (CI/CD)¶
Команда exec обеспечивает неинтерактивное выполнение для конвейеров CI/CD. В сочетании с --base-ref запускает проверку безопасности PR, анализируя изменённые методы между базовым Git-рефом и HEAD.
Базовое использование¶
# Проверка безопасности относительно последних 5 коммитов
python -m src.cli exec --prompt "Review security" --base-ref HEAD~5
# Указать конкретную базу данных
python -m src.cli exec --prompt "Review security" --db data/projects/postgres.duckdb --base-ref origin/main
# Генерация всех выходных файлов
python -m src.cli exec --prompt "Review security" \
--base-ref HEAD~5 \
--output-file results.json \
--sarif-file security.sarif \
--comment-file pr_comment.md
Аргументы¶
| Аргумент | Обязательный | Описание |
|---|---|---|
--prompt |
Да | Промпт анализа (например, “Review security”) |
--db |
Нет | Путь к базе данных DuckDB CPG (автоопределение из активного проекта) |
--base-ref |
Нет | Git-реф для проверки PR (например, HEAD~5, origin/main) |
--output-file |
Нет | Путь для записи результатов в формате JSON |
--sarif-file |
Нет | Путь для записи вывода в формате SARIF 2.1.0 |
--comment-file |
Нет | Путь для записи комментария PR в формате Markdown |
--sandbox |
Нет | Режим песочницы: read-only (по умолчанию) или workspace-write |
--output-schema |
Нет | Путь к файлу JSON Schema для валидации вывода |
Коды возврата¶
| Код | Значение |
|---|---|
0 |
Уязвимости не обнаружены (чисто) |
1 |
Обнаружены уязвимости или ошибка |
Выходные файлы¶
JSON-результаты (--output-file) следуют схеме из .codegraph/security-review-schema.json:
{
"findings": [
{
"finding_id": "f1",
"pattern_id": "sql_injection",
"severity": "critical",
"method_name": "exec_query",
"filename": "db.c",
"line_number": 42,
"description": "Potential SQL injection via unvalidated input"
}
],
"critical_count": 1,
"high_count": 0,
"medium_count": 0,
"low_count": 0,
"changed_methods": ["exec_query", "parse_input"],
"total_findings": 1,
"new_findings": 1,
"fixed_findings": 0,
"existing_findings": 0
}
Поля new_findings, fixed_findings и existing_findings отражают дельту между base ref и HEAD, вычисленную через fingerprinting (pattern_id:method_name:filename).
SARIF-вывод (--sarif-file) генерирует формат SARIF 2.1.0 через модуль SARIFExporter (src/security/sarif_exporter.py), совместимый с GitHub Security Alerts и другими SARIF-потребителями. Каждый результат включает поле fingerprints.codegraph/v1 для отслеживания дельты.
Комментарий PR (--comment-file) генерирует Markdown с таблицей серьёзности, деталями по каждой находке и секцией Delta (New vs Fixed) — новые и исправленные замечания.
Валидация схемы (--output-schema) проверяет JSON-вывод по предоставленному файлу JSON Schema после выполнения. Возвращает код 1 при ошибке валидации. Требует пакет jsonschema.
Интеграция с CI/CD¶
GitHub Actions¶
security-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Run security review
run: |
python -m src.cli exec --prompt "Review security" \
--base-ref origin/main \
--sarif-file security.sarif \
--comment-file pr_comment.md
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: security.sarif
- name: Post PR comment
if: github.event_name == 'pull_request'
run: gh pr comment ${{ github.event.number }} --body-file pr_comment.md
GitLab CI¶
security-review:
stage: test
script:
- python -m src.cli exec --prompt "Review security"
--base-ref origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
--sarif-file security.sarif
--comment-file pr_comment.md
--output-file results.json
- |
CRITICAL=$(python -c "import json; print(json.load(open('results.json'))['critical_count'])")
if [ "$CRITICAL" -gt 0 ]; then
echo "Обнаружены критические уязвимости!"
exit 1
fi
artifacts:
paths:
- security.sarif
- pr_comment.md
reports:
sast: security.sarif
Детали конвейера¶
Конвейер проверки безопасности PR:
- Получает изменённые файлы через
git diff --name-only <base_ref> HEAD - Запрашивает методы в изменённых файлах из базы данных CPG (
nodes_method) - Запускает
SecurityScannerдля каждого изменённого метода (HEAD) - Запускает
SecurityScannerдля тех же методов на base ref (базовые находки) - Вычисляет дельту «Новые / Исправленные / Существующие» через fingerprinting
- Подсчитывает находки по серьёзности (critical, high, medium, low)
- Генерирует вывод SARIF 2.1.0 (через
SARIFExporter) и комментарий PR в формате Markdown с дельтой
Автоисправления (Autofix)¶
Флаг --autofix в команде audit генерирует автоматические предложения по исправлению уязвимостей, найденных через анализ потоков данных (анализ заражения данных).
Использование¶
# Аудит с автоисправлениями
python -m src.cli audit --db data/projects/postgres.duckdb --autofix
# JSON-вывод для CI
python -m src.cli audit --db data/projects/postgres.duckdb --autofix --format json
Конфигурация¶
Поведение autofix настраивается через config.yaml:
autofix:
enabled: true
context_lines_before: 5
context_lines_after: 5
llm_max_confidence: 0.6
llm_temperature: 0.1
llm_max_tokens: 2048
max_fixes_per_run: 10
require_approval: true
REST API¶
POST /api/v1/security/autofix
Возвращает массив предложений по исправлениям с diff-исправлениями, оценками уверенности и объяснениями. Только чтение — исправления не применяются.
MCP-инструмент¶
codegraph_autofix(method_name="exec_query", cwe="CWE-89")
Возвращает JSON с diff-исправлениями (только чтение).
Смотрите также¶
- Руководство по импорту проектов — Подробная документация по импорту
- Справочник REST API — Конечные точки API
- Руководство пользователя TUI — Интерактивный терминальный интерфейс
- Документация по безопасности — Функции безопасности