Используйте этот сценарий, чтобы совместить измеренное покрытие со структурными данными: вызывающим кодом, точками входа и ссылками на тесты. Это помогает выбрать следующий тест с учётом поведения продукта и риска ошибки.
Просмотр измеренного покрытия
Подготовьте окружение по руководству CLI. Выполняйте команды в PowerShell из корня репозитория CodeGraph. Нужны существующий CPG, доступный GoCPG gRPC и артефакт покрытия, сформированный тестовым инструментом проекта. Пути артефактов выбирает настройка runtime_coverage_artifact_paths оркестратора аудита установленной версии.
python -m src.cli coverage show --db "<cpg-path>" --uncovered-only
Замените <cpg-path> на базу выбранного проекта. Команда читает диапазоны строк методов через GoCPG, сопоставляет их с артефактом покрытия и выводит результат в терминал. --uncovered-only выбирает методы без исполненных строк.
При наличии данных вывод содержит путь и идентичность артефакта, формат, сводку Methods и строки методов. Ревизия в поле source_revision относится к CPG выбранного проекта. Сопоставьте её с ревизией, на которой запускались тесты. Строки UNMATCHED coverage source показывают файлы отчёта, которые не удалось сопоставить с методами выборки; проверьте пути этих файлов.
Если артефакт не найден, выводится:
No coverage data found: runtime coverage artifact is missing.
Для этого случая код возврата — 0, но покрытие не измерено. Другие причины недоступности печатаются как Coverage data unavailable: <reason> с кодом 1; ошибка запроса даёт Coverage query failed: <error> и код 1. Для измерения покрытия сформируйте артефакт штатным тестовым инструментом и проверьте его путь, ревизию и сопоставление с методами.
Как подготовить и прочитать данные
Сформируйте отчёт покрытия тестовым инструментом своего проекта и сохраните его под зарегистрированным корнем исходников. Команда ищет артефакты этого проекта по runtime_coverage_artifact_paths. В текущей конфигурации указаны coverage.json, coverage.xml и lcov.info, в том числе во вложенных каталогах. Рабочий каталог, из которого запущен CLI, не определяет корень поиска. Сверьте путь исходников и базу проекта через python -m src.cli projects info <project-name>.
Строка Methods показывает отношение методов с хотя бы одной исполненной строкой к методам, сопоставленным с исполняемыми строками артефакта. Например, метод с двумя исполненными строками из десяти учитывается как покрытый метод; его строковое покрытие составляет 20%. Для проверки поведения изучите утверждения соответствующих тестов.
Команда анализирует выборку методов, упорядоченную по файлу и номеру строки. В текущей конфигурации в неё входят первые 500 методов. Размер выборки задаёт sql_query_limits.race_condition. Сводка относится к методам этой выборки, которые удалось сопоставить с отчётом покрытия. Для оценки всего проекта используйте также полный отчёт тестового инструмента.
Типизированное исследование QA
Настройте проект и LLM-провайдер по руководству программного вызова. Запрос ниже — шаблон для существующей задачи QA. Замените область, идентификатор задачи, пути и ссылки на доступные свидетельства этой ревизии.
Для приоритизации пробелов по графу вызовите обязательный сценарий QA:
from src.digital_employees.runtime.scenarios import (
RoleBoundScenarioInvocationRequest,
invoke_role_bound_scenario_request,
)
request = RoleBoundScenarioInvocationRequest(
query="Приоритизируй непроверенное поведение в согласованной области изменения.",
employee_id="codegraph_qa",
scenario_id="scenario_07",
event_type="qa_start",
context={
"project_key": "codegraph",
"namespace": "default",
"task_id": "<task-id>",
"file_paths": ["<changed-source>", "<related-tests>"],
"source_refs": ["<coverage-artifact-ref>", "<acceptance-criterion-ref>"],
},
)
result = invoke_role_bound_scenario_request(request)
if result.get("error"):
raise RuntimeError(result["error"])
print(result["scenario_id"])
print(result.get("answer") or "")
При отсутствии project_key, namespace или task_id вызов выдаёт RuntimeError с role_bound_scenario_contract_missing. Для отрицательной проверки передайте context={}, затем восстановите область задачи.
При успешном исследовании результат содержит scenario_07, ответ в answer и сведения о вызове в metadata.role_bound_scenario_invocation. Прочитайте рекомендации вместе с отчётом покрытия: для каждого предложенного теста определите проверяемое поведение, участок кода и связь с критерием приёмки. Сохраните ответ и ревизию исходников рядом с артефактом покрытия.
Приоритизируйте поведение и риск
Проверьте каждого кандидата с учётом:
- активных критериев приёмки и изменённой ревизии;
- публичных точек входа и границ авторизации;
- ошибок, повторов, тайм-аутов и отката;
- контрактов хранения и сериализации;
- вызывающего кода с высоким влиянием и ранее пропущенных дефектов;
- актуальности покрытия и фактического присутствия файла в артефакте.
Покрытая строка показывает, что тест исполнил этот участок кода. Проверяемое поведение определяют утверждения теста. Исключения для сгенерированного кода и защитных ветвей зафиксируйте в настройках покрытия и согласуйте при ревью.
Рабочий цикл от теста
- Выберите одно отсутствующее поведение, связанное с критерием приёмки или явным риском.
- Добавьте тест, который падает по ожидаемой причине.
- Внесите минимальное изменение продукта, только если падение выявило пробел реализации.
- Запустите точечный тест и соседний регрессионный набор.
- Повторно сформируйте артефакт покрытия штатным тестовым инструментом проекта.
- Обновите данные поддерживаемым путём проекта и снова запустите команду просмотра.
- Зафиксируйте выполнение теста, ревизию, основу артефакта и оставшиеся пробелы.
Приложите отчёт покрытия к результатам QA. Для приёмки зафиксируйте Pass/Fail по каждому активному критерию и решение ответственного за QA.
Связанные материалы
Если обнаружен пробел реализации, используйте разработку функции, а для структурного ревью ревизии — проверку кода.