Руководство по CLI

Руководство по CLI

Полная документация по интерфейсу командной строки для CodeGraph.


Содержание


Краткий справочник

Инструмент Назначение Типичное использование
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:

  1. Получает изменённые файлы через git diff --name-only <base_ref> HEAD
  2. Запрашивает методы в изменённых файлах из базы данных CPG (nodes_method)
  3. Запускает SecurityScanner для каждого изменённого метода (HEAD)
  4. Запускает SecurityScanner для тех же методов на base ref (базовые находки)
  5. Вычисляет дельту «Новые / Исправленные / Существующие» через fingerprinting
  6. Подсчитывает находки по серьёзности (critical, high, medium, low)
  7. Генерирует вывод 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-исправлениями (только чтение).


Смотрите также