{"meta":{"title":"Параметры настройки рабочих процессов для сканирования кода","intro":"Отредактируйте файл рабочего процесса, чтобы настроить, как расширенная настройка сканирует код вашего проекта на наличие уязвимостей и ошибок.","product":"Безопасность и качество кода","breadcrumbs":[{"href":"/ru/code-security","title":"Безопасность и качество кода"},{"href":"/ru/code-security/reference","title":"Reference"},{"href":"/ru/code-security/reference/code-scanning","title":"Проверка кода"},{"href":"/ru/code-security/reference/code-scanning/workflow-configuration-options","title":"Параметры настройки рабочих процессов"}],"documentType":"article"},"body":"# Параметры настройки рабочих процессов для сканирования кода\n\nОтредактируйте файл рабочего процесса, чтобы настроить, как расширенная настройка сканирует код вашего проекта на наличие уязвимостей и ошибок.\n\n<!--The CodeQL CLI man pages include a link to a section of the article. If you rename this article,\nmake sure that you also update the MS short link: https://aka.ms/code-scanning-docs/config-file.-->\n\n## Необходимые условия\n\nВам нужно использовать расширенную настройки и code scanning уметь редактировать файл рабочего процесса, где определённа ваша конфигурация.\n\nПримеры, приведённые в этой статье, относятся к файлу Рабочий процесс анализа CodeQL . По умолчанию этот файл определяется в `.github/workflows/codeql-analysis.yml`.\n\n## Частота сканирования\n\nВы можете настроить Рабочий процесс анализа CodeQL код для сканирования по расписанию или когда происходят определённые события в репозитории.\n\nПроверка кода при принудительной отправке изменений и при создании запроса на вытягивание не позволяет разработчикам вводить новые уязвимости и ошибки в код. Сканирование кода по расписанию информирует вас о последних уязвимостях и ошибках, которые GitHubобнаруживают исследователи безопасности и сообщество, даже если разработчики не поддерживают репозиторий активно.\n\n### Проверка при принудительной отправке\n\nПо умолчанию Рабочий процесс анализа CodeQL он использует `on:push` это событие для запуска сканирования кода при каждом push-запросе на стандартную ветку репозитория и любые защищённые ветки. Чтобы code scanning процесс был активирован на определённой ветке, рабочий процесс должен существовать именно в этой ветке. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions#on).\n\nЕсли вы сканируете при push, результаты появляются во **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield\" aria-label=\"shield\" role=\"img\"><path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg> Security and quality** вкладке вашего репозитория. Дополнительные сведения см. в разделе [Оценка оповещений сканирования кода для репозитория](/ru/code-security/code-scanning/managing-code-scanning-alerts/assessing-code-scanning-alerts-for-your-repository#viewing-the-alerts-for-a-repository).\n\nКроме того, когда `on:push` проверка возвращает результаты, которые можно сопоставить с открытым запросом на вытягивание, эти оповещения будут автоматически отображаться в запросе на вытягивание в том же месте, что и другие оповещения о запросе на вытягивание. Оповещения определяются путем сравнения имеющихся результатов анализа заголовка ветви с результатами анализа целевой ветви. Для получения дополнительной информации о code scanning оповещениях в pull requests см. [Рассмотрение оповещений проверки кода в запросах на вытягивание](/ru/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests).\n\n### Сканирование запросов на вытягивание\n\nПо умолчанию Рабочий процесс анализа CodeQL это `pull_request` событие использует для запуска сканирования кода на pull request, направленных на стандартную ветку.\nЕсли pull request из приватного форка, событие `pull_request` будет активировано только если вы выбрали опцию «Запустить рабочие процессы из fork pull requests» в настройках репозитория. Для получения дополнительной информации см. [Управление настройками GitHub Actions для репозитория](/ru/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-private-repository-forks).\n\nДополнительные сведения о событии `pull_request` см. в разделе [События, инициирующие рабочие процессы](/ru/actions/using-workflows/events-that-trigger-workflows#pull_request).\n\nПри проверке запросов на вытягивание результаты отображаются в виде оповещений в результатах проверки запроса на вытягивание. Дополнительные сведения см. в разделе [Рассмотрение оповещений проверки кода в запросах на вытягивание](/ru/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests).\n\nС помощью триггера `pull_request` , настроенного для проверки фиксации слияния запроса на вытягивание, а не головной фиксации, будут создаваться более эффективные и точные результаты, чем сканирование головы ветви на каждой отправке. Однако, если вы используете CI/CD-систему, которую нельзя настроить для запуска на pull request, вы всё равно можете использовать `on:push` триггер и code scanning назначить результаты на открытые pull requests на ветке и добавить оповещения в виде аннотаций в pull request. Дополнительные сведения см. в разделе [\"Сканирование при отправке](#scanning-on-push)\".\n\n> \\[!NOTE]\n> Если ваш репозиторий настроен с очередью слияния, вам нужно включить `merge_group` событие как дополнительный триггер для code scanning. Это гарантирует, что запросы на вытягивание также сканируются при добавлении в очередь слияния. Дополнительные сведения см. в разделе [Управление очередью слияния](/ru/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue).\n\n### Отключение ненужных сканирований запросов на вытягивание\n\nАктивацию проверки кода можно отключить для определенных запросов на вытягивание, предназначенных для ветви по умолчанию, независимо от того, какие файлы были изменены. Вы можете настроить это, указав `on:pull_request:paths-ignore` или `on:pull_request:paths` в рабочем code scanning процессе. Например, если единственными изменениями в запросе на вытягивание являются файлы с расширениями `.md` или `.txt`, можно использовать следующий массив `paths-ignore`.\n\n```yaml copy\non:\n  push:\n    branches: [main, protected]\n  pull_request:\n    branches: [main]\n    paths-ignore:\n      - '**/*.md'\n      - '**/*.txt'\n```\n\n> \\[!NOTE]\n\n```\n          `on:pull_request:paths-ignore` и `on:pull_request:paths` задают условия, определяющие, будут ли действия в рабочем процессе выполняться при запросе на вытягивание. Они не определяют, какие файлы будут анализироваться при _выполнении_ действий. Если запрос на вытягивание содержит все файлы, которые не соответствуют `on:pull_request:paths-ignore` или `on:pull_request:paths`, рабочий процесс выполняет действия и сканирует все файлы, измененные в запросе на вытягивание, включая те, которые совпадают с `on:pull_request:paths-ignore` или `on:pull_request:paths`, если файлы не были исключены. Сведения об исключении файлов из анализа см. в разделе [\"Указание каталогов для сканирования](#specifying-directories-to-scan)\".\n```\n\nДополнительные сведения об использовании `on:pull_request:paths-ignore` и `on:pull_request:paths` определении того, когда рабочий процесс будет выполняться для запроса на вытягивание, см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore).\n\n### Сканирование по расписанию\n\nЕсли вы используете стандартную Рабочий процесс анализа CodeQLверсию, рабочий процесс будет сканировать код в вашем репозитории раз в неделю, помимо сканов, запускаемых событиями. Чтобы изменить это расписание, измените `cron` значение события `on.schedule` в рабочем процессе. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/reference/workflows-and-actions/workflow-syntax#onschedule).\n\n> \\[!NOTE]\n> Это событие запускается только в том случае, если файл рабочего процесса существует в ветвь по умолчанию.\n\n### Пример\n\nСледующий пример показывает a Рабочий процесс анализа CodeQL для конкретного репозитория, где по умолчанию вызывается ветка `main` и одна защищённая ветка под названием `protected`.\n\n```yaml copy\non:\n  push:\n    branches: [main, protected]\n  pull_request:\n    branches: [main]\n  schedule:\n    - cron: '20 14 * * 1'\n```\n\nЭтот рабочий процесс проверяет:\n\n* каждую отправку в ветвь по умолчанию и защищенную ветвь;\n* каждый запрос на вытягивание в ветвь по умолчанию;\n* ветвь по умолчанию каждый понедельник в 14:20 UTC.\n\n## Операционная система\n\n> \\[!NOTE]\n>\n> * Сканирование кода Swift использует средства выполнения macOS по умолчанию.\n\n```\n          GitHub-Размещённые для macOS Runners дороже Linux и Windows, поэтому стоит рассматривать сканирование только этапа сборки. Дополнительные сведения о настройке сканирования кода для Swift см. в разделе [AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#considerations-for-building-swift). Для получения дополнительной информации о ценах для GitHub-hosted runners см. [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions).\n```\n\n> * Code scanning кода Swift не поддерживается для runners, которые являются частью Actions Runner Controller (ARC), так как для выполнения ARC используется только Linux и Swift, требуются средства выполнения macOS. Тем не менее, вы можете иметь смесь как runners ARC, так и локальных модулей macOS runners. Дополнительные сведения см. в разделе [Контроллер runner действий](/ru/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller).\n\nЕсли вашему коду требуется конкретная операционная система для компиляции, вы можете настроить её в Рабочий процесс анализа CodeQL. Отредактируйте значение, `jobs.analyze.runs-on` чтобы указать операционную систему для машины, на которой выполняются ваши code scanning действия.\n\n```yaml copy\njobs:\n  analyze:\n    name: Analyze\n    runs-on: [ubuntu-latest]\n```\n\nЕсли вы решите использовать самостоятельно размещённый раннер для сканирования кода, вы можете указать операционную систему, используя соответствующую метку как второй элемент в двухэлементном массиве после `self-hosted`.\n\n```yaml copy\njobs:\n  analyze:\n    name: Analyze\n    runs-on: [self-hosted, ubuntu-latest]\n```\n\n```\n          CodeQL\n          code scanning поддерживает последние версии Ubuntu, Windows и macOS. Поэтому типичные значения для этого параметра: `ubuntu-latest`, `windows-latest` и `macos-latest`. Дополнительные сведения см. в разделе [AUTOTITLE и [AUTOTITLE](/actions/using-jobs/choosing-the-runner-for-a-job)](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners).\n\n          Если вы используете самохостируемый раннер, необходимо убедиться, что Git находится в переменной PATH. Дополнительные сведения см. в разделе [AUTOTITLE и [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners)](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners).\n```\n\nРекомендуемые спецификации (оперативная память, ядра процессора и диск) для анализа CodeQL на самостоятельных машинах\nсм. [Рекомендуемое оборудование для запуска CodeQL](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/recommended-hardware-resources-for-running-codeql).\n\n##\n\n```\n          CodeQL Расположение базы данных\n```\n\nВ целом, вам не нужно беспокоиться о том, где находятся Рабочий процесс анализа CodeQLCodeQL базы данных, так как последующие шаги автоматически найдут базы, созданные предыдущими шагами. Однако, если вы пишете кастомный этап рабочего процесса, требующий размещения CodeQL базы данных в определённом месте диска, например, для загрузки базы данных как артефакта рабочего процесса, вы можете указать это место, используя `db-location` параметр под действием `init` .\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    db-location: '${{ github.runner_temp }}/my_location'\n```\n\nОни Рабочий процесс анализа CodeQL ожидают, что указанный `db-location` путь будет записываемым, и либо не существует, либо будет пустой каталогом. При использовании этого параметра в задании, выполняющемся в локальном средстве выполнения или с помощью контейнера Docker, пользователь должен убедиться, что выбранный каталог очищается между запусками или что базы данных удаляются после того, как они больше не нужны. Это не обязательно для заданий, работающих на GitHub-hosted runners, которые каждый раз получают новый экземпляр и чистую файловую систему. Дополнительные сведения см. в разделе [Средства выполнения тестов, размещенные в GitHub](/ru/actions/using-github-hosted-runners/about-github-hosted-runners).\n\nЕсли этот параметр не используется, база Рабочий процесс анализа CodeQL данных создаст в временном месте по своему выбору. В настоящее время значение по умолчанию — `${{ github.runner_temp }}/codeql_databases`.\n\n## Языки, подлежащие анализу\n\n```\n          CodeQL\n          code scanning Поддерживает код, написанный на следующих языках:\n```\n\n<!-- If you update the list of supported languages for CodeQL, update docs-internal/content/get-started/learning-about-github/github-language-support.md to reflect the changes. -->\n\n* C/C++\n* C#\n* Go\n* Java и Kotlin\n* JavaScript/TypeScript\n* Python\n* Ruby\n* Rust\n* Swift \\* GitHub Actions рабочих процессов\n\n> \\[!NOTE]\n>\n> * Используется `java-kotlin` для анализа кода, написанного на Java, Kotlin или обоих.\n> * Используется `javascript-typescript` для анализа кода, написанного на JavaScript, TypeScript или обоих.\n\nДополнительные сведения см. в документации на веб-сайте CodeQL: [поддерживаемые языки и платформы](https://codeql.github.com/docs/codeql-overview/supported-languages-and-frameworks/).\n\n```\n          CodeQL использует следующие языковые идентификаторы:\n```\n\n| Язык  | Идентификатор | Необязательные альтернативные идентификаторы (если таковые есть) |\n| ----- | ------------- | ---------------------------------------------------------------- |\n| C/C++ | `c-cpp`       |                                                                  |\n\n```\n          `c` или `cpp` |\n```\n\n\\| C# | `csharp` |\n\\|  |\nРабочие процессы GitHub Actions | `actions`\n|\n\\| Go | `go` |\n\\| Java и Kotlin | `java-kotlin` |\n`java` или `kotlin` |\n\\| JavaScript/TypeScript | `javascript-typescript` |\n`javascript` или `typescript` |\n\\| Python | `python` |\n\\| Ruby | `ruby` |\n\\|  |\nRust | `rust`\n|\n\\| Swift | `swift` |\n\n> \\[!NOTE]\n> Если указать один из альтернативных идентификаторов, это эквивалентно использованию стандартного идентификатора языка. Например, указание `javascript` вместо того, чтобы исключить `javascript-typescript` анализ кода TypeScript. Вместо этого можно использовать пользовательский файл конфигурации для исключения файлов из анализа с помощью `paths-ignore` параметра. Дополнительные сведения см. в разделе [\"Использование пользовательского файла](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#custom-configuration-files) конфигурации\" и [\"Указание каталогов для сканирования](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#specifying-directories-to-scan)\".\n\nЭти идентификаторы языка можно использовать в качестве аргументов `languages` для ввода `init` действия. Рекомендуется предоставить только один язык в качестве аргумента:\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    languages: javascript-typescript\n```\n\nФайл по умолчанию Рабочий процесс анализа CodeQL , созданный после [настройки расширенной настройки для сканирования кода с помощью CodeQL](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-advanced-setup-for-code-scanning-with-codeql) , определяет матрицу с свойством, `language` которое перечисляет языки в вашем репозитории, которые будут анализироваться. Эта матрица автоматически заполняется поддерживаемыми языками, обнаруженными в репозитории. Использование матрицы `language` позволяет CodeQL выполнять анализ каждого языка параллельно и настраивать анализ под каждый язык. В отдельном анализе имя языка из матрицы предоставляется `init` действию в качестве аргумента входных `languages` данных. Рекомендуется использовать эту конфигурацию для всех рабочих процессов. Дополнительные сведения о матрицах см. в разделе [Выполнение вариантов заданий в рабочем процессе](/ru/actions/using-jobs/using-a-matrix-for-your-jobs).\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n```\n\nЕсли ваш рабочий процесс использует матрицу `language` , CodeQL то я анализирую только языки в матрице. Чтобы изменить языки, которые нужно проанализировать, измените конфигурацию матрицы. Вы можете удалить язык, чтобы предотвратить его анализ. Существует несколько причин, по которым может возникнуть желание запретить анализ языка. Например, проект может иметь зависимости на другом языке, чем основной код, и вы, возможно, предпочтете не видеть оповещения для этих зависимостей. Вы также можете добавить язык, который не был в репозитории при code scanning конфигурировании. Например, если репозиторий изначально содержал JavaScript только при code scanning конфигурировании, а позже вы добавили код на Python, вам придётся добавить `python` его в матрицу.\n\n```yaml copy\njobs:\n  analyze:\n    name: Analyze\n    ...\n    strategy:\n      fail-fast: false\n      matrix:\n        include:\n          - language: javascript-typescript\n            build-mode: none\n          - language: python\n            build-mode: none\n```\n\nДля скомпилированных языков матрицу можно также использовать для настройки режима сборки, который следует использовать для анализа, изменив значение `build-mode` свойства. Дополнительные сведения о режимах сборки см. в разделе [Сканирование кода CodeQL для скомпилированных языков](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#about-build-mode-none-for-codeql).\n\nЕсли ваш рабочий процесс не даёт аргумента для `languages` ввода `init` действия, то CodeQL он настроен на последовательное выполнение анализов. В этом случае CodeQL автоматически обнаруживает и пытается проанализировать любые поддерживаемые языки в репозитории. В зависимости от размера репозитория и количества языков это может занять много времени. Если анализ для одного языка завершается сбоем в этом режиме, анализ для всех языков завершается ошибкой. Поэтому не рекомендуется использовать эту конфигурацию.\n\n> \\[!NOTE]\n> При последовательном анализе языков будет использоваться режим сборки по умолчанию для каждого языка. Кроме того, если вы предоставляете явный `autobuild` шаг, то каждый язык, поддерживающий `autobuild` этот режим, будет использовать его, а другие языки используют свой режим по умолчанию. Если требуется более сложная конфигурация в режиме сборки, то необходимо настроить матрицу.\n\n## Степени оповещений о сбоях чеков\n\nВы можете использовать наборы правил, чтобы предотвратить объединение запросов на вытягивание при выполнении одного из следующих условий:\n\n* Требуемый инструмент находит code scanning оповещение о тяжести, определённой в наборе правил.\n* Анализ необходимого инструмента всё ещё продолжается.\n* Требуемый инструмент не настроен для репозитория.\n\nДополнительные сведения см. в разделе [Настройка защиты от сканирования кода слиянием](/ru/code-security/code-scanning/managing-your-code-scanning-configuration/set-code-scanning-merge-protection). Дополнительные сведения о наборах правил см. в разделе [Сведения о наборе правил](/ru/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets).\n\n## Категория анализа\n\nИспользуйте `category` для различения нескольких анализов для одного и того же средства и фиксации, но для разных языков или различных частей кода. Указанная в рабочем процессе категория будет включена в файл результатов SARIF.\n\nЭтот параметр особенно полезен, если вы работаете с monorepos и имеете несколько файлов SARIF для различных компонентов monorepo.\n\n```yaml copy\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v4\n      with:\n        # Optional. Specify a category to distinguish between multiple analyses\n        # for the same tool and ref. If you don't use `category` in your workflow,\n        # GitHub will generate a default category name for you\n        category: \"my_category\"\n```\n\nЕсли вы не укажете параметр `category` в вашем рабочем процессе, GitHub он сгенерирует для вас название категории на основе имени файла рабочего процесса, который запускает действие, имени действия и любых матричных переменных. Рассмотрим пример.\n\n* Рабочий процесс `.github/workflows/codeql-analysis.yml` и действие `analyze` создают категорию `.github/workflows/codeql.yml:analyze`.\n* Рабочий процесс `.github/workflows/codeql-analysis.yml`, действие `analyze` и переменные матрицы `{language: javascript-typescript, os: linux}` создают категорию `.github/workflows/codeql-analysis.yml:analyze/language:javascript-typescript/os:linux`.\n\nЗначение `category` будет отображаться как свойство `<run>.automationDetails.id` в SARIF версии 2.1.0. Дополнительные сведения см. в разделе [Поддержка SARIF для проверки кода](/ru/code-security/code-scanning/integrating-with-code-scanning/sarif-support-for-code-scanning#runautomationdetails-object).\n\nУказанная категория не перезаписывает сведения об объекте `runAutomationDetails` в файле SARIF, если они включены.\n\n##\n\n```\n          CodeQL Наборы моделей\n```\n\nЕсли ваша кодовая база зависит от библиотеки или фреймворка, которые не распознаются стандартными запросами в CodeQL, вы можете расширить CodeQL охват code scanning рабочего процесса, указав опубликованные CodeQL пакеты моделей. Дополнительные сведения о создании собственных пакетов моделей см. в разделе [Создание и работа с пакетами CodeQL](/ru/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-and-working-with-codeql-packs#creating-a-model-pack).\n\n> \\[!NOTE]\n> В настоящее время пакеты моделей CodeQL находятся в public preview и подвергаются изменению. Пакеты моделей поддерживаются для анализа C/C++, C#, Java/Kotlin, Python, Ruby, и Rust .\n>\n> Редактор модели CodeQL в расширении CodeQL для Visual Studio Code поддерживает моделирование зависимостей для  C#, Java/Kotlin, Python и Ruby.\n\n### Использование CodeQL моделей пакетов\n\nЧтобы добавить один или несколько опубликованных CodeQL наборов моделей, укажите их внутри `with: packs:` записи в `uses: github/codeql-action/init@v4` разделе рабочего процесса. В `packs` укажите один или несколько пакетов для использования и (необязательно) версию для загрузки. Если не указать версию, загружается последняя версия. Если вы хотите использовать пакеты, которые не являются общедоступными, необходимо задать для переменной среды `GITHUB_TOKEN` секрет, имеющий доступ к пакетам. Дополнительные сведения см. в разделе \\[AUTOTITLE и [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/security-guides/automatic-token-authentication)]\\(/actions/security-guides/encrypted-secrets).\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    config-file: ./.github/codeql/codeql-config.yml\n    queries: security-extended\n    packs: my-company/my-java-queries@~7.8.9,my-repo/my-java-model-pack\n```\n\nВ этом примере по умолчанию будут выполняться запросы для Java, а также запросы из версии, превышающей или равную `7.8.9` и меньше `7.9.0` пакета запросов `my-company/my-java-queries`. Зависимости, моделиированные в последней версии пакета `my-repo/my-java-model-pack` модели, будут доступны как для запросов по умолчанию, так и для тех, в которых они есть `my-company/my-java-queries`.\n\n## Нестандартные запросы\n\nПри использовании CodeQL для проверки кода подсистема анализа CodeQL создает базу данных из кода и выполняет запросы к нему. Анализ CodeQL использует набор запросов по умолчанию, но в дополнение к ним можно указать дополнительные запросы для выполнения.\n\n> \\[!TIP]\n> Вы также можете указать запросы, которые необходимо исключить из анализа или включить в анализ. Для этого требуется использовать пользовательский файл конфигурации. Для получения дополнительной информации см. [разделы «Пользовательские конфигурационные файлы](#custom-configuration-files) » и [«Исключение конкретных запросов из анализа](#excluding-specific-queries-from-analysis) » ниже.\n\nМожно выполнять дополнительные запросы, если они являются частью пакета CodeQL, опубликованного в пакете GitHub Container registry или пакет CodeQL , хранящийся в репозитории. Дополнительные сведения см. в разделе [О проверке кода с помощью CodeQL](/ru/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql#about-codeql-queries).\n\nПараметры, которые можно использовать для указания дополнительных запросов:\n\n* `packs` чтобы установить один или несколько пакетов запросов CodeQL и запустить набор запросов по умолчанию или запросы для этих пакетов.\n* `queries` для указания одного файла *.ql*, каталога, содержащего несколько файлов *.ql*, файла определения набора запросов *.qls* или любого их сочетания. Дополнительные сведения об определениях набора запросов см. в статье [\"Создание наборов запросов CodeQL наборов](https://codeql.github.com/docs/codeql-cli/creating-codeql-query-suites/) запросов.\n\nВ одном рабочем процессе можно использовать как `packs`, так и `queries`.\n\nНе рекомендуется ссылаться на наборы запросов непосредственно из репозитория `github/codeql`, например `github/codeql/cpp/ql/src@main`. Такие запросы должны быть перекомпилированы и могут быть несовместимы с текущей активной версией CodeQL в GitHub Actions, что может привести к ошибкам во время анализа.\n\n### Использование пакетов запросов\n\nЧтобы добавить один или несколько CodeQL пакетов запросов, добавьте `with: packs:` запись в `uses: github/codeql-action/init@v4` разделе рабочего процесса. В `packs` укажите один или несколько пакетов для использования и (необязательно) версию для загрузки. Если не указать версию, загружается последняя версия. Если вы хотите использовать пакеты, которые не являются общедоступными, необходимо задать для переменной среды `GITHUB_TOKEN` секрет, имеющий доступ к пакетам. Дополнительные сведения см. в разделе \\[AUTOTITLE и [Использование GITHUB\\_TOKEN для проверки подлинности в рабочих процессах](/ru/actions/security-guides/automatic-token-authentication)]\\(/actions/security-guides/encrypted-secrets).\n\n> \\[!NOTE]\n> Для рабочих процессов, генерирующих CodeQL базы данных для нескольких языков, нужно вместо этого указывать CodeQL пакеты запросов в конфигурационном файле. Для получения дополнительной информации см. [раздел «Указание CodeQL пакетов запросов](#specifying-codeql-query-packs) » ниже.\n\nВ указанном ниже примере `scope` является организация или личная учетная запись, которая опубликовала пакет. Когда рабочий процесс запускается, из которых загружаются четыре CodeQL пакета GitHub запросов, и выполняется стандартный набор запросов или набор запросов для каждого пакета:\n\n* Будет скачана последняя версия `pack1` с выполнением всех запросов по умолчанию.\n* Будет скачана версия 1.2.3 для `pack2` с выполнением всех запросов по умолчанию.\n* Будет скачана последняя версия `pack3`, которая совместима с версией 3.2.1, с выполнением всех запросов.\n* Будет скачана версия 4.5.6 для `pack4` с выполнением только тех запросов, которые обнаружены в `path/to/queries`.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    # Comma-separated list of packs to download\n    packs: scope/pack1,scope/pack2@1.2.3,scope/pack3@~3.2.1,scope/pack4@4.5.6:path/to/queries\n```\n\n> \\[!NOTE]\n> Если вы указываете конкретную версию пакета запросов, будьте осторожны, что выбранная вами версия может со временем стать слишком старой для эффективного использования CodeQL движком по умолчаниюCodeQL. Чтобы обеспечить оптимальную производительность, если необходимо указать точные версии пакета запросов, следует периодически просматривать, следует ли периодически перемещать закрепленную версию пакета запросов.\n>\n> Дополнительные сведения о совместимости пакетов см. в разделе [Ссылка на пакеты запросов CodeQL](/ru/code-security/reference/code-scanning/codeql/codeql-cli/codeql-query-packs#codeql-pack-compatibility).\n\n### Скачивание CodeQL паков из GitHub Enterprise Server\n\nЕсли ваш рабочий процесс использует паки, опубликованные на GitHub Enterprise Server установке, вам нужно указать процессу, где их найти. Это можно сделать, используя `registries` ввод github/codeql-action/init\\@v4 действия. Этот вход принимает список `url`свойств `packages`, `token` как показано ниже.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    registries: |\n      # URL to the container registry, usually in this format\n      - url: https://containers.GHEHOSTNAME1/v2/\n\n        # List of package glob patterns to be found at this registry\n        packages:\n          - my-company/*\n          - my-company2/*\n\n        # Token, which should be stored as a secret\n        token: ${{ secrets.GHEHOSTNAME1_TOKEN }}\n\n      # URL to the default container registry\n      - url: https://ghcr.io/v2/\n        # Packages can also be a string\n        packages: \"*/*\"\n        token: ${{ secrets.GHCR_TOKEN }}\n\n    \n```\n\nШаблоны пакетов в списке реестров проверяются по порядку, поэтому обычно следует сначала разместить наиболее конкретные шаблоны пакетов. Значения должны `token` быть personal access token (classic) сгенерированы экземпляром GitHub, с которого вы скачиваете с разрешением `read:packages` .\n\nОбратите внимание на имя `|``registries` свойства. Это важно, поскольку GitHub Actions входы могут принимать только строки. Использование `|` этого преобразует следующий текст в строку, которая позже анализируется действием github/codeql-action/init\\@v4 .\n\n### Использование запросов в пакетах QL\n\nЧтобы добавить один или несколько запросов, добавьте запись `with: queries:` в раздел `uses: github/codeql-action/init@v4` рабочего процесса. Если запросы находятся в частном репозитории, используйте параметр `external-repository-token`, чтобы указать маркер, имеющий доступ для извлечения частного репозитория.\n\nКроме того, можно указать наборы запросов в значении `queries`. Наборы запросов представляют собой коллекции запросов, обычно сгруппированные по цели или языку.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    # Comma-separated list of queries / packs / suites to run.\n    # This may include paths or a built in suite, for example:\n    # security-extended or security-and-quality.\n    queries: security-extended\n    # Optional. Provide a token to access queries stored in private repositories.\n    external-repository-token: ${{ secrets.ACCESS_TOKEN }}\n```\n\nСледующие наборы запросов встроены в CodeQL code scanning и доступны для использования.\n\n| Набор запросов         | Description                                                                                    |\n| :--------------------- | :--------------------------------------------------------------------------------------------- |\n| `security-extended`    | Запросы из набора по умолчанию, а также запросы с более низкой степенью серьезности и точности |\n| `security-and-quality` | Запросы из `security-extended`, а также запросы касательно удобства обслуживания и надежности  |\n\nДополнительные сведения см. [в статье AUTOTITLE](/ru/code-security/code-scanning/managing-your-code-scanning-configuration/built-in-codeql-query-suites).\n\nКаждый из этих наборов запросов содержит другое подмножество запросов, включенных в встроенный пакет запросов CodeQL для этого языка. Наборы запросов автоматически создаются с помощью метаданных для каждого запроса. Дополнительные сведения см. в разделе [метаданных](https://codeql.github.com/docs/writing-codeql-queries/metadata-for-codeql-queries/) запросов CodeQL.\n\n<!--See lists of query tables linked in the reusable above.-->\n\nПри указании набора запросов обработчик анализа CodeQL будет выполнять набор запросов по умолчанию и все дополнительные запросы, определенные в дополнительном наборе запросов.\n\n### Работа с пользовательскими файлами конфигурации\n\nПри использовании файла конфигурации для пользовательских параметров применяются любые дополнительные пакеты или запросы, указанные в рабочем процессе, вместо запросов, указанных в файле конфигурации. Если вы хотите запустить объединенный набор дополнительных пакетов или запросов, префиксировать значение `packs` или `queries` в рабочем процессе с помощью символа `+` . Для получения дополнительной информации см. [раздел «Пользовательские конфигурационные файлы](#custom-configuration-files)».\n\nВ следующем примере символ `+` гарантирует, что указанные дополнительные пакеты и запросы используются вместе с любыми другими, перечисленными в указанном файле конфигурации.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    config-file: ./.github/codeql/codeql-config.yml\n    queries: +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main\n    packs: +scope/pack1,scope/pack2@1.2.3,scope/pack3@4.5.6:path/to/queries\n```\n\n<!-- Anchor to maintain the current CodeQL CLI manual pages link: https://aka.ms/code-scanning-docs/config-file -->\n\n## Пользовательские конфигурационные файлы\n\nПользовательский файл конфигурации — это альтернативный способ настройки дополнительных пакетов и запросов для выполнения. Вы также можете использовать файл, чтобы отключить запросы по умолчанию, исключить или включить определенные запросы, а также указать, какие каталоги следует сканировать во время анализа.\n\nИспользуйте в файле рабочего процесса параметр `config-file` действия `init`, чтобы указать путь к файлу конфигурации, который необходимо использовать. В этом примере загружается файл конфигурации *./.github/codeql/codeql-config.yml*.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    config-file: ./.github/codeql/codeql-config.yml\n```\n\nФайл конфигурации может находиться в репозитории, который вы анализируете, или во внешнем репозитории. Использование внешнего репозитория позволяет задавать параметры конфигурации для нескольких репозиториев в одном месте. При ссылке на файл конфигурации, расположенный во внешнем репозитории, можно использовать синтаксис *OWNER/REPOSITORY/FILENAME\\@BRANCH*. Например, *octo-org/shared/codeql-config.yml\\@main*.\n\nЕсли файл конфигурации находится во внешнем частном репозитории, используйте параметр `external-repository-token` действия `init`, чтобы указать маркер, имеющий доступ к частному репозиторию.\n\n```yaml copy\n- uses: github/codeql-action/init@v4\n  with:\n    external-repository-token: ${{ secrets.ACCESS_TOKEN }}\n```\n\nПараметры в файле конфигурации записываются в формате YAML.\n\n### Определение CodeQL пакетов запросов\n\nВы задаёте CodeQL пакеты запросов в массиве. Обратите внимание, что формат отличается от формата, используемого файлом рабочего процесса.\n\n```yaml copy\npacks:\n  # Use the latest version of 'pack1' published by 'scope'\n  - scope/pack1\n  # Use version 1.2.3 of 'pack2'\n  - scope/pack2@1.2.3\n  # Use the latest version of 'pack3' compatible with 3.2.1\n  - scope/pack3@~3.2.1\n  # Use pack4 and restrict it to queries found in the 'path/to/queries' directory\n  - scope/pack4:path/to/queries\n  # Use pack5 and restrict it to the query 'path/to/single/query.ql'\n  - scope/pack5:path/to/single/query.ql\n  # Use pack6 and restrict it to the query suite 'path/to/suite.qls'\n  - scope/pack6:path/to/suite.qls\n```\n\nПолный формат для указания пакета запросов:`scope/name[@version][:path]`.\n`version` и `path` являются необязательными.\n`version` — это диапазон версий SemVer. Если он отсутствует, используется последняя версия. Дополнительные сведения о диапазонах SemVer см. в [документации SemVer по npm](https://docs.npmjs.com/cli/v6/using-npm/semver#ranges).\n\nЕсли у вас рабочий процесс, который генерирует более одной CodeQL базы данных, вы можете задать любые CodeQL пакеты запросов для запуска в пользовательском конфигурационном файле с помощью вложенной карты пакетов.\n\n```yaml copy\npacks:\n  # Use these packs for JavaScript and TypeScript analysis\n  javascript:\n    - scope/js-pack1\n    - scope/js-pack2\n  # Use these packs for Java and Kotlin analysis\n  java:\n    - scope/java-pack1\n    - scope/java-pack2@v1.0.0\n```\n\n### Расширение CodeQL покрытия с помощью моделей угроз\n\n> \\[!NOTE]\n> Модели угроз в настоящее время находятся в public preview и подвергаются изменению. Во время public previewмодели угроз поддерживаются только анализом для Java/Kotlin и C#.\n\nМодель угроз по умолчанию включает удаленные источники ненадежных данных. Вы можете расширить CodeQL модель угроз, включив локальные источники ненадёжных данных (например: аргументы командной строки, переменные среды, файловые системы и базы данных), указав `threat-models: local` это в пользовательском конфигурационном файле. При расширении модели угроз также будет использоваться модель угроз по умолчанию.\n\n### Указание дополнительных запросов\n\nДополнительные запросы задаются в массиве `queries`. Каждый элемент массива содержит параметр `uses`, имеющий значение, определяющее отдельный файл запроса, каталог, содержащий файлы запросов, или файл определения набора запросов.\n\n```yaml copy\nqueries:\n  - uses: ./my-basic-queries/example-query.ql\n  - uses: ./my-advanced-queries\n  - uses: ./query-suites/my-security-queries.qls\n```\n\nПри необходимости можно присвоить каждому элементу массива имя, как показано в примере файлов конфигурации ниже. Для получения дополнительной информации о дополнительных запросах см. [выше раздел «Нестандартные запросы](#non-default-queries) ».\n\n### Отключение запросов по умолчанию\n\nЕсли требуется выполнить только пользовательские запросы, можно отключить запросы безопасности по умолчанию с помощью `disable-default-queries: true`.\n\n### Исключение конкретных запросов из анализа\n\nВы можете добавлять фильтры `exclude` и `include` в пользовательский файл конфигурации, чтобы указать запросы, которые необходимо исключить из анализа или включить в него.\n\nЭто полезно, если вы хотите исключить, например:\n\n* Конкретные запросы из наборов по умолчанию (`security`, `security-extended` и`security-and-quality`).\n* Конкретные запросы, результаты которых вас не интересуют.\n* Все запросы, которые создают предупреждения и рекомендации.\n\nВы можете использовать фильтры `exclude`, как в приведенном ниже файле конфигурации, чтобы исключить запросы, которые требуется удалить из анализа по умолчанию. В приведенном ниже примере файла конфигурации запросы `js/redundant-assignment` и `js/useless-assignment-to-local` исключаются из анализа.\n\n```yaml copy\nquery-filters:\n  - exclude:\n      id: js/redundant-assignment\n  - exclude:\n      id: js/useless-assignment-to-local\n```\n\nЧтобы найти идентификатор запроса, можно нажать на уведомление в списке оповещений на вкладке **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-shield\" aria-label=\"shield\" role=\"img\"><path d=\"M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"></path></svg> Security and quality** . Это открывает страницу с деталями оповещения. Поле `Rule ID` содержит идентификатор запроса. Дополнительные сведения о странице сведений об оповещении см. в разделе [О предупреждениях о сканировании кода](/ru/code-security/code-scanning/managing-code-scanning-alerts/about-code-scanning-alerts#about-alert-details).\n\n> \\[!TIP]\n>\n> * Важно учитывать порядок фильтров. Первая инструкция фильтра, которая идет после инструкций по запросам и пакетам запросов, определяет, включены или исключены запросы по умолчанию.\n> * Последующие инструкции выполняются по порядку, а инструкции, которые отображаются позже в файле, имеют приоритет над предыдущими инструкциями.\n\nВ разделе \"Примеры файлов[ конфигурации\" можно найти еще один пример использования этих фильтров](#example-configuration-files).\n\nДополнительные сведения об использовании `exclude` и `include` фильтрации в пользовательском файле конфигурации см. в разделе [Создание наборов запросов CodeQL](/ru/code-security/codeql-cli/using-the-advanced-functionality-of-the-codeql-cli/creating-codeql-query-suites#filtering-the-queries-in-a-query-suite). Сведения о метаданных запроса, которые можно отфильтровать, см. в разделе [Метаданные запросов CodeQL](https://codeql.github.com/docs/writing-codeql-queries/metadata-for-codeql-queries/).\n\n### Указание каталогов для сканирования\n\nКогда кодовые базы анализируются без создания кода, можно ограничить code scanning их файлами в определённых каталогах, добавив `paths` массив в конфигурационный файл. Вы также можете исключить файлы в определенных каталогах из анализа, добавив `paths-ignore` массив. Эту опцию можно использовать при запуске CodeQL действий на интерпретируемом языке (Python, Ruby, JavaScript/TypeScript) или при анализе скомпилированного языка без создания кода (в настоящее время поддерживается для C/C++, C#, Java и Rust).\n\n```yaml copy\npaths:\n  - src\npaths-ignore:\n  - src/node_modules\n  - '**/*.test.js'\n```\n\n> \\[!NOTE]\n> \\*\n> `paths` Ключевые слова and`paths-ignore`, используемые в контексте code scanning конфигурационного файла, не должны путаться с одними и теми же ключевыми словами при использовании в рабочем процессе`on.<push|pull_request>.paths`. Когда они используются для изменения `on.<push|pull_request>` в рабочем процессе, они определяют, будут ли выполняться действия, когда кто-то изменяет код в указанных каталогах. Дополнительные сведения см. в разделе [Синтаксис рабочего процесса для GitHub Actions](/ru/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore).\n>\n> * Символы шаблона фильтра `?`, `+`, `[`, `]` и `!` не поддерживаются и будут сопоставлены буквально.\n> * Символы `**` могут находиться только в начале или в конце строки. В противном случае они должны быть заключены в косые черты. Символы `**` нельзя смешивать с другими символами. Например, `foo/**`, `**/foo` и `foo/**/bar` — это допустимый синтаксис, а `**foo` — нет. Однако, как показано в примере, одиночные звезды можно использовать вместе с другими символами. Все, что содержит символ `*`, необходимо заключить в кавычки.\n\nДля анализа, где строится код, если вы хотите ограничиться code scanning конкретными каталогами в проекте, необходимо указать соответствующие этапы сборки в рабочем процессе. Команды, которые необходимо использовать для исключения каталога из сборки, зависят от системы сборки. Дополнительные сведения см. в разделе [Сканирование кода CodeQL для скомпилированных языков](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages#adding-build-steps-for-a-compiled-language).\n\nПри изменении кода в конкретных каталогах можно быстро анализировать небольшие части монорепозитория. Необходимо исключить каталоги на этапах сборки, а также использовать ключевые слова `paths-ignore` и `paths` для [`on.<push|pull_request>`](/ru/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore) в рабочем процессе.\n\n<!-- Anchor to maintain the old CodeQL CLI manual pages link: https://aka.ms/docs-config-file -->\n\n### Примеры файлов конфигурации\n\nЭтот файл конфигурации добавляет набор запросов `security-and-quality` в список запросов, выполняемых CodeQL при сканировании кода. Для получения дополнительной информации о доступных наборах запросов см. [раздел «Нестандартные запросы](#non-default-queries)».\n\n```yaml\nname: \"My CodeQL config\"\n\nqueries:\n  - uses: security-and-quality\n```\n\nСледующий файл конфигурации отключает запросы по умолчанию и задает набор пользовательских запросов для выполнения. Он также настраивает CodeQL на сканирование файлов в каталоге *src* (относительно корневого каталога), кроме каталога *src/node\\_modules* и кроме файлов, имя которых заканчивается на *.test.js*. Поэтому файлы в папке *src/node\\_modules* и файлы с именами, заканчивающимися на *.test.js*, исключаются из анализа.\n\n```yaml\nname: \"My CodeQL config\"\n\ndisable-default-queries: true\n\nqueries:\n  - name: Use an in-repository CodeQL pack (run queries in the my-queries directory)\n    uses: ./my-queries\n  - name: Use an external JavaScript CodeQL pack (run queries from an external repo)\n    uses: octo-org/javascript-codeql-pack@main\n  - name: Use an external query (run a single query from an external CodeQL pack)\n    uses: octo-org/python-codeql-pack/show_ifs.ql@main\n  - name: Use a query suite file (run queries from a query suite in this repo)\n    uses: ./codeql-packs/complex-python-codeql-pack/rootAndBar.qls\n\npaths:\n  - src\npaths-ignore:\n  - src/node_modules\n  - '**/*.test.js'\n```\n\nСледующий файл конфигурации выполняет только запросы, которые создают оповещения об ошибке. Сначала конфигурация выбирает все запросы по умолчанию, все запросы в `./my-queries` и набор по умолчанию в `codeql/java-queries`, а затем исключает все запросы, которые создают предупреждения или рекомендации.\n\n```yaml\nqueries:\n  - name: Use an in-repository CodeQL query pack (run queries in the my-queries directory)\n    uses: ./my-queries\npacks:\n  - codeql/java-queries\nquery-filters:\n- exclude:\n    problem.severity:\n      - warning\n      - recommendation\n```\n\n## Детали конфигурации\n\nЕсли вы хотите указать дополнительные детали конфигурации в файле рабочего процесса, вы можете использовать `config` ввод `init` команды действия CodeQL . Значение этого входа должно быть строкой YAML, соответствующей формату конфигурационного файла, указанному в [разделе Пользовательские конфигурационные файлы](#custom-configuration-files) выше.\n\n### Пример конфигурации\n\nЭтот шаг в GitHub Actions файле рабочего процесса использует `config` вход для отключения стандартных запросов, добавления `security-extended` набора запросов и исключения запросов с тегом `cwe-020`.\n\n```yaml\n- uses: github/codeql-action/init@v4\n  with:\n    languages: ${{ matrix.language }}\n    config: |\n      disable-default-queries: true\n      threat-models: local\n      queries:\n        - uses: security-extended\n      query-filters:\n        - exclude:\n            tags: /cwe-020/\n```\n\nВы можете использовать тот же подход, чтобы указать все допустимые параметры конфигурации в файле рабочего процесса.\n\n> \\[!TIP]\n> Вы можете делить одну конфигурацию в нескольких репозиториях, используя GitHub Actions переменные. Одним из преимуществ этого подхода является обновление конфигурации в одном месте без редактирования файла рабочего процесса.\n>\n> В следующем примере `vars.CODEQL_CONF` — GitHub Actions переменная. Его значение может быть содержимым любого допустимого файла конфигурации. Дополнительные сведения см. в разделе [Хранение сведений в переменных](/ru/actions/learn-github-actions/variables#defining-configuration-variables-for-multiple-workflows).\n>\n> ```yaml\n> - uses: github/codeql-action/init@v4\n>   with:\n>     languages: ${{ matrix.language }}\n>     config: ${{ vars.CODEQL_CONF }}\n> ```\n\n## Компилированные языки\n\nДля скомпилированных языков можно решить, как CodeQL действие создаёт CodeQL базу данных для анализа. Сведения о доступных параметрах сборки см. в разделе [Сканирование кода CodeQL для скомпилированных языков](/ru/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages).\n\n## Отправка данных\n\n```\n          GitHub может отображать данные анализа кода, созданные внешне сторонним инструментом. Вы можете загрузить данные анализа кода с помощью действия `upload-sarif`. Дополнительные сведения см. в разделе [AUTOTITLE](/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github).\n```"}