Перейти к основному содержимому

Карта возможностей анализа кода

Выберите команду CodeGraph для проверки изменений, зависимостей, безопасности или структурных шаблонов. Узнайте, как проверить результат анализа.

Справочник

Перед изменением кода команде нужно понять, какие части системы затронуты, где проверить поведение и какие риски стоит разобрать. Поиск по тексту помогает найти имя или строку. Для вопросов о вызовах, зависимостях и передаче данных нужны связи между элементами программы.

CodeGraph использует граф свойств кода (CPG) и специализированные процессы анализа, чтобы исследовать эти вопросы. Результат можно связать с задачей и ревизией, проверить по исходникам и использовать при ревью. Эта страница помогает выбрать проверку по ожидаемому результату, а затем перейти к инструкции запуска.

Один код, разные вопросы

Допустим, команда меняет способ расчёта лимита в сервисе. Анализ влияния помогает исследовать зависимости изменённого метода. Ревью рассматривает само изменение и замечания анализаторов. Проверка гипотез безопасности исследует выбранные слабости, а модель угроз — границы доверия. Анализ состава программного обеспечения (SCA) рассматривает зависимости, если изменение затрагивает состав ПО.

Эти проверки дают разные основания для решения. Полезно выбрать их по риску задачи и заранее описать, какой ответ нужен. После анализа инженер открывает указанные участки кода и тестами подтверждает ожидаемое поведение. Команда получает результаты выбранных проверок и использует их при обсуждении изменения.

Что даёт графовый контекст

Граф связывает доступные элементы и отношения программы: файлы, символы, вызовы и зависимости. Поэтому команда может исследовать связь между частями кода, которые находятся в разных файлах. Анализ использует факты, извлечённые из выбранной ревизии проекта.

Например, при изменении метода недостаточно знать, где объявлен этот метод. Команде нужны методы, которые вызывают его напрямую или через другие методы. Команда impact показывает прямых вызывающих и методы, которые вызывают его через другие методы. Параметр --max-depth задаёт глубину поиска; по умолчанию это пять уровней. Для метода с более чем 100 прямыми вызывающими методами анализ использует прямые связи. По результату инженер выбирает участки для ревью и тесты затронутого поведения.

Для повторяющейся конструкции структурный поиск даёт список совпадений, а анализ потоков данных помогает исследовать путь от источника значения до опасной операции. Команда использует эти результаты по-разному: список вызовов помогает определить область изменения, совпадения указывают участки для проверки, а путь данных объясняет механизм риска. Так участники ревью обсуждают конкретные связи и участки кода.

Для анализа путей данных используйте руководство по потокам данных. Для проверки границ компонентов — руководство по архитектурному контролю. Если результат нужен для управляемой задачи, цифровые сотрудники объясняют, как передать его на независимую проверку и связать с приёмкой.

Ниже перечислены команды CLI и руководства для запуска анализа, а затем объяснены механизмы проверок.

Выберите сценарий

Выберите сценарий
Вопрос Справка команды Что проверять после анализа
Что изменилось и что проверить при оценке изменений? python -m src.cli review --help Замечания и доказательства для выбранных изменений.
На что может повлиять изменение? python -m src.cli impact --help Зависимости и зона влияния.
Какие гипотезы безопасности подтверждает CPG? python -m src.cli hypothesis --help Подтверждённые, отклонённые и неопределённые гипотезы.
Где встречается структурный шаблон? python -m src.cli patterns --help Совпадения в выбранной области.
Какие угрозы относятся к границе системы? python -m src.cli threat-model --help Угрозы и меры снижения риска.
Какие риски есть в зависимостях? python -m src.cli sbom audit --help Результаты анализа состава ПО для текущих входных данных.
Как описать границы компонентов и выбрать архитектурные правила? gocpg architecture --help Модель компонентов и применимость правил; запуск — по руководству архитектурного контроля.

Команды в таблице показывают справку и не выполняют анализ. Для запуска подготовьте Python-среду по руководству CLI, откройте PowerShell в корне репозитория CodeGraph и разрешите локальную точку входа:

$env:CODEGRAPH_ALLOW_LOCAL_PYTHON_CLI = "1"

Для строки архитектурного контроля нужен установленный GoCPG; используйте путь к его исполняемому файлу, если команда gocpg не добавлена в PATH.

Выберите инструкцию ниже для самой проверки. Перед автоматизацией сверяйте параметры с --help установленной версии. Доступность MCP и REST проверяйте по активному профилю и списку инструментов работающего сервера.

Поддерживаемые интерфейсы анализа

Проверка и влияние изменений

python -m src.cli review объединяет контекст изменения с анализаторами изменений кода. python -m src.cli impact предназначена для вопросов о затронутых символах, зависимостях и риске регрессии. Сохраняйте найденные пути и замечания вместе с Git-ревизией: так участники ревью могут открыть тот же код и проверить выводы.

Практические шаги описаны в руководстве по проверке изменений. Позиционное имя метода и доступные поля глубины, БД и вывода проверяйте по справке команды impact.

Анализ безопасности

python -m src.cli hypothesis проверяет гипотезы уязвимостей по CPG. python -m src.cli threat-model рассматривает систему и границы доверия шире. python -m src.cli sbom audit отвечает за компоненты и зависимости. Его результат входит в пакет доказательств вместе с остальными проверками.

См. систему гипотез, моделирование угроз и SCA/SBOM.

Поиск структурных шаблонов

python -m src.cli patterns — поддерживаемая точка входа для повторяемых структурных запросов. Поиск сопоставляет структуру исходного кода с выбранным шаблоном и возвращает найденные совпадения. Инженер открывает соответствующие участки кода и использует их при проверке архитектуры, поиске повторяющихся конструкций или подготовке рефакторинга.

Настройка и интерпретация описаны в руководстве по поиску шаблонов.

Как работают проверки

Обнаружение клонов и символьное выполнение используются внутри анализа. Отдельные точки входа CLI, REST или MCP для них не предусмотрены; используйте перечисленные выше процессы.

В сценариях анализа используются следующие механизмы:

Как работают проверки
Механизм Что он делает
Обнаружение клонов Выявляет похожие фрагменты кода внутри процесса анализа.
Символьное выполнение Помогает проверять достижимость путей taint-анализа.
Анализ потока управления и данных Исследует порядок выполнения и передачу значений при проверке изменений и безопасности.
Подготовка автоматических исправлений Готовит предлагаемые изменения для просмотра различий и проверки тестами.

Например, при рефакторинге общего метода команде нужны разные ответы. Анализ влияния помогает найти его потребителей, поиск шаблонов — похожие конструкции, а обнаружение клонов — повторяющиеся фрагменты. По этим результатам разработчик выбирает область изменения и регрессионные тесты. Если метод обрабатывает внешние данные, анализ потоков и гипотезы безопасности добавляют проверку передачи значений в опасные операции. Команда собирает проверку под задачу, используя связи одного графа и конкретные позиции в исходниках.

Как использовать результат анализа

Перед интерпретацией результата зафиксируйте проект, коммит, команду, конфигурацию и время сборки графа. Откройте строку исходного кода хотя бы для одной находки и убедитесь, что покрытие языков и путей совпадает с заданной областью. После изменения обновите граф, повторите ту же ограниченную команду и сравните идентификаторы находок, а не только их количество.

Находки помогают выбрать участки кода для ревью и составить набор регрессионных тестов. При проверке гипотезы уязвимости исследуйте путь данных, условия выполнения и влияние на систему. Для автоматического исправления сравните предложенные изменения с исходной версией и выполните тесты. Повторный анализ показывает, как изменился результат выбранной проверки.

Связанные руководства

Если известна цель, но не команда, начните с карты сценариев. Проблемы настройки разбираются в руководстве по диагностике. Для анализа через агента найдите активный интерфейс по руководству оператора MCP.