{"meta":{"title":"Настройка покрытия кодами для вашего репозитория","intro":"Используйте встроенное покрытие кода, чтобы Code Quality найти неподтвердиемый код для запросов на вытягивание без оплаты или обслуживания отдельной сторонней службы.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/code-security","title":"Безопасность и качество кода"},{"href":"/ru/enterprise-cloud@latest/code-security/how-tos","title":"How-tos"},{"href":"/ru/enterprise-cloud@latest/code-security/how-tos/maintain-quality-code","title":"Поддержание качественного кода"},{"href":"/ru/enterprise-cloud@latest/code-security/how-tos/maintain-quality-code/set-up-code-coverage","title":"Настройте покрытие кодов"}],"documentType":"article"},"body":"# Настройка покрытия кодами для вашего репозитория\n\nИспользуйте встроенное покрытие кода, чтобы Code Quality найти неподтвердиемый код для запросов на вытягивание без оплаты или обслуживания отдельной сторонней службы.\n\nВы можете настроить покрытие кода для репозитория двумя способами:\n\n* **Автоматическая настройка:** Используйте агент, на основе ИИ, чтобы автоматически создать рабочий процесс. Выберите этот вариант, если:\n  * Вы хотите быстро приступить к работе без записи конфигурации YAML.\n  * В проекте используются общие платформы тестирования и шаблоны сборки.\n  * Вы комфортно выполняете итерацию в рабочем процессе, созданном СИ.\n* **Настройка вручную:** Настройте рабочий процесс CI самостоятельно. Выберите этот вариант, если:\n  * Вам нужен точный контроль над процессом покрытия.\n  * У вас есть сложные требования CI (например, частные реестры или пользовательские шаги сборки).\n  * Вы хотите точно понять, как настроено покрытие.\n\n## Автоматическая настройка\n\nВы можете использовать параметр автоматической настройки для создания рабочего рабочего процесса покрытия кода без ручной разработки конфигурации CI. Агент анализирует репозиторий, определяет платформу тестирования и открывает запрос на вытягивание с рабочим процессом покрытия, готовым для проверки.\n\n> \\[!NOTE]\n> Автоматическая настройка использует ИИ для создания файла рабочего процесса. Дополнительные затраты на использование этой функции отсутствуют.\n\n### Предварительные требования для автоматической настройки\n\n* Code Quality включена для вашего репозитория. См [. раздел AUTOTITLE](/ru/enterprise-cloud@latest/code-security/how-tos/maintain-quality-code/enable-code-quality).\n* В репозитории есть существующий набор тестов.\n\n### Автоматическое создание рабочего процесса покрытия\n\n1. На GitHubперейдите на главную страницу репозитория.\n2. Под именем репозитория щелкните **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-gear\" aria-label=\"gear\" role=\"img\"><path d=\"M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z\"></path></svg> Settings**. Если вкладка \"Параметры\" не отображается, выберите **раскрывающееся меню <svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-kebab-horizontal\" aria-label=\"More\" role=\"img\"><path d=\"M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z\"></path></svg>** и нажмите кнопку **\"Параметры**\".\n\n   ![Снимок экрана: заголовок репозитория с вкладками. Вкладка \"Параметры\" выделена темно-оранжевым контуром.](/assets/images/help/repository/repo-actions-settings.png)\n3. В боковой панели, в разделе «Безопасность», нажмите **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-code-square\" aria-label=\"code review\" role=\"img\"><path d=\"M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z\"></path></svg> Качество кода** для открытия страницы «Качество кода».\n4. В разделе \"Анализ покрытия кода\" щелкните раскрывающийся список **\"Настройка** \".\n5. В списке выберите **\"Создать рабочий процесс с помощью ИИ**\". Подождите, пока агент будет анализировать репозиторий. Агент открывает черновик запроса на вытягивание и отправляет контрольный список действий, которые он выполняет.\n6. Чтобы просмотреть запрос на вытягивание, нажмите кнопку **\"Проверить запрос на вытягивание**\".\n   Просмотрите запрос на вытягивание после завершения работы агента. Описание запроса на вытягивание содержит сведения об изменениях, включая обновления конфигурации проекта, изменения файла рабочего процесса и параметры выходных данных покрытия.\n7. Если рабочий процесс успешно выполняется в ci и покрытие отправляется правильно, объедините запрос на вытягивание.\n\n   Если рабочий процесс нуждается в корректировках [, ознакомьтесь](/ru/enterprise-cloud@latest/code-security/concepts/code-quality/automatic-code-coverage-setup) с рекомендациями по различным результатам и способам итерации.\n\nДополнительные сведения о том, как работает агент и что ожидать, см. в разделе [Автоматическая настройка покрытия кода](/ru/enterprise-cloud@latest/code-security/concepts/code-quality/automatic-code-coverage-setup).\n\n## Настройка вручную\n\nВстроенное покрытие кода позволяет отслеживать, насколько тщательно тесты выполнят код, не добавляя стороннюю службу в цепочку инструментов или бюджет. В следующих процедурах вы сгенерируете отчёт о покрытии Cobertura XML из вашего тестового пакета, загружаете его в GitHub, и просматриваете результаты покрытия в ваших pull requests.\n\n### Предварительные требования для ручной настройки\n\n* Code Quality включена для вашего репозитория.\n* В вашем репозитории есть тестовый набор, который работает в GitHub Actions.\n* Ваш тестовый фреймворк может создать отчёт о покрытии в формате **Cobertura XML** .\n\n### Шаг 1: Сгенерируйте отчёт по покрытию Cobertura XML\n\nНастройте ваш тестовый фреймворк так, чтобы он выводил отчёт о покрытии в формате Cobertura XML. Покрытие кода работает с любым языком программирования, способным создавать такой формат.\n\n1. Определите инструмент покрытия вашего языка из таблицы ниже.\n2. Добавьте соответствующую команду или конфигурацию в рабочий процесс CI, чтобы каждый раз при выполнении тестов генерировался файл Cobertura XML.\n\n| Language              | Фреймворк / Инструмент          | Как сгенерировать Cobertura XML                                                   |\n| --------------------- | ------------------------------- | --------------------------------------------------------------------------------- |\n| Python                | `pytest` + `pytest-cov`         | `pytest --cov=. --cov-report=xml`                                                 |\n| Java                  | JaCoCo                          | Используйте `cover2cover.py` скрипт или плагин JaCoCo-to-Cobertura Gradle/Maven   |\n| JavaScript/TypeScript | Стамбул / `nyc`                 | `nyc report --reporter=cobertura`                                                 |\n| Ruby                  | SimpleCov                       | Добавить `SimpleCov::Formatter::CoberturaFormatter`                               |\n| Вперед                | `go test` + `gocover-cobertura` | `go test -coverprofile=cover.out && gocover-cobertura < cover.out > coverage.xml` |\n\n> \\[!TIP]\n> Если ваш фреймворк не указан выше, проверьте документацию по поддержке вывода Cobertura. Многие инструменты либо поддерживают его напрямую, либо могут конвертировать в Cobertura XML из других форматов.\n\n### Шаг 2: Загрузите отчёт о покрытии\n\nПосле того как ваши тесты сгенерируют отчёт Cobertura XML, загрузите его так GitHub , чтобы результаты покрытия отображались в pull requests.\n\n1. Откройте файл CI-рабочего процесса вашего репозитория (например, `.github/workflows/ci.yml`).\n\n2. Добавьте следующий шаг после этапа, который запускает ваши тесты и формирует отчёт о покрытии:\n\n   ```yaml copy\n   - name: Upload coverage report\n     if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository\n     uses: actions/upload-code-coverage@v1\n     with:\n       file: COVERAGE-FILE-PATH.xml\n       language: LANGUAGE\n       label: LABEL\n   ```\n\n3. Измените следующие значения:\n   * **`COVERAGE-FILE-PATH.xml`**: Путь к вашему отчёту Cobertura XML (например `coverage.xml` , или `target/site/jacoco/cobertura.xml`).\n   * **`LANGUAGE`**: Основной язык используемого кода (например, `Python`, `Java`, `JavaScript`).\n   * **`LABEL`**: метка для идентификации этого отчета о охвате (например, `code-coverage/pytest`).\n\n4. Коммит и продвигай изменение рабочего процесса.\n\n### Полный пример рабочего процесса\n\nЭтот пример запускает Python тестов с `pytest-cov` и загружает отчет о покрытии:\n\n```yaml annotate copy\n# This workflow runs your test suite, generates a Cobertura XML coverage report, and uploads it to GitHub. Once this workflow is committed, coverage results appear automatically on every pull request.\nname: Code Coverage\n\n# Run on pushes to the default branch (to establish the baseline) and on pull requests (to compare against it). Code Quality compares PR branch coverage to the default branch, so both triggers are needed.\non:\n  push:\n    branches: [main]\n  pull_request:\n    branches: [main]\n\n# The `code-quality: write` permission is required to upload coverage data. No other elevated permissions are needed.\npermissions:\n  contents: read\n  code-quality: write\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      # Check out the PR head commit (not the merge commit) so coverage line numbers map correctly to the diff.\n      - uses: actions/checkout@v6\n        with:\n          ref: ${{ github.event.pull_request.head.sha || github.sha }}\n\n      # Replace this step with whatever language setup your project uses (Node.js, Java, Go, etc.). The upload action works with any language that produces a Cobertura XML report.\n      - uses: actions/setup-python@v5\n        with:\n          python-version: \"3.x\"\n\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          pip install -r requirements.txt\n          pip install pytest pytest-cov\n\n      # Adapt this step for your test framework. The key requirement is producing a Cobertura XML file. For other languages, see the framework table earlier in this article.\n      - name: Run tests with coverage\n        run: pytest --cov=. --cov-report=xml\n\n      # This step replaces any third-party coverage upload (Codecov, Coveralls, etc.). After this runs, the `github-code-quality[бот]` bot posts a coverage summary directly on the pull request.\n      - name: Upload coverage report\n        if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository\n        uses: actions/upload-code-coverage@v1\n        with:\n          file: coverage.xml\n          language: Python\n          label: code-coverage/pytest\n```\n\n### Шаг 3: Просмотр результатов покрытия по pull requests\n\n1. Откройте pull request (или push к существующему), который запускает настроенный вами рабочий процесс.\n2. После завершения рабочего процесса ищите комментарий в `github-code-quality[бот]` pull request. Комментарий включает:\n   * Совокупный процент покрытия линии для ветви запроса на вытягивание по сравнению с ветвью по умолчанию.\n   * Разбивка по файлам, показывающая, какие файлы получили или потеряли покрытие."}