1
0
mirror of synced 2026-01-03 15:05:54 -05:00
Files
docs/translations/ru-RU/content/code-security/code-scanning/using-codeql-code-scanning-with-your-existing-ci-system/configuring-codeql-runner-in-your-ci-system.md
2022-12-12 17:21:29 +00:00

23 KiB
Raw Blame History

title, shortTitle, intro, product, miniTocMaxHeadingLevel, redirect_from, versions, type, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
title shortTitle intro product miniTocMaxHeadingLevel redirect_from versions type topics ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
Настройка средства выполнения тестов CodeQL в системе CI Configure CodeQL runner Вы можете настроить, как {% data variables.code-scanning.codeql_runner %} сканирует код в проекте и передает результаты в {% data variables.product.prodname_dotcom %}. {% data reusables.gated-features.code-scanning %} 3
/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning-in-your-ci-system
/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-codeql-code-scanning-in-your-ci-system
/code-security/secure-coding/configuring-codeql-code-scanning-in-your-ci-system
/code-security/secure-coding/configuring-codeql-runner-in-your-ci-system
/code-security/secure-coding/using-codeql-code-scanning-with-your-existing-ci-system/configuring-codeql-runner-in-your-ci-system
feature
codeql-runner-supported
how_to
Advanced Security
Code scanning
CodeQL
Integration
CI
Repositories
Pull requests
C/C++
C#
Java
64245dd9f320947510db3e108b30c886c95b89d1 b617c4a7a1 MT ru-RU 11/11/2022 148161073

{% data reusables.code-scanning.deprecation-codeql-runner %} {% data reusables.code-scanning.beta %} {% data reusables.code-scanning.enterprise-enable-code-scanning %}

О настройке {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} в системе CI

Для интеграции {% data variables.product.prodname_code_scanning %} в систему НЕПРЕРЫВНОй интеграции можно использовать {% data variables.code-scanning.codeql_runner %}. Дополнительные сведения см. в разделе Выполнение {% data variables.code-scanning.codeql_runner %} в системе CI.

Как правило, {% data variables.code-scanning.codeql_runner %} вызывается следующим образом.

$ /path/to-runner/codeql-runner-OS <COMMAND> <FLAGS>

/path/to-runner/ зависит от того, где вы скачали {% data variables.code-scanning.codeql_runner %} в системе CI. codeql-runner-OS зависит от используемой операционной системы. Существует три версии {% data variables.code-scanning.codeql_runner %}, codeql-runner-linux, codeql-runner-macosи codeql-runner-winдля систем Linux, macOS и Windows соответственно.

Чтобы настроить способ сканирования кода в {% data variables.code-scanning.codeql_runner %}, можно использовать флаги, такие как --languages и --queries, или указать пользовательские параметры в отдельном файле конфигурации.

Сканирование запросов на вытягивание

Сканирование кода при каждом создании запроса на вытягивание предотвращает внесение разработчиками в код новых уязвимостей и ошибок.

Чтобы отсканировать запрос на вытягивание, запустите команду analyze ​​и используйте флаг --ref для указания запроса на вытягивание. Ссылка является refs/pull/<PR-number>/head или refs/pull/<PR-number>/merge в зависимости от того, извлечена ли фиксация HEAD ветки запроса на вытягивание или фиксация слияния с базовой веткой.

$ /path/to-runner/codeql-runner-linux analyze --ref refs/pull/42/merge

{% note %}

Примечание. Если при анализе кода с помощью стороннего инструмента необходимо, чтобы результаты отображались в виде проверок запросов на вытягивание, нужно выполнить команду upload и использовать флаг --ref, чтобы вместо ветви указать запрос на вытягивание. Ссылка является refs/pull/<PR-number>/head или refs/pull/<PR-number>/merge.

{% endnote %}

Переопределение автоматического определения языка

{% data variables.code-scanning.codeql_runner %} автоматически обнаруживает и сканирует код, написанный на поддерживаемых языках.

{% data reusables.code-scanning.codeql-languages-bullets %}

{% data reusables.code-scanning.specify-language-to-analyze %}

Чтобы переопределить автоматическое определение языка, выполните команду init с флагом --languages, за которым следует разделенный запятыми список ключевых слов языка. Ключевые слова для поддерживаемых языков: {% data reusables.code-scanning.codeql-languages-keywords %}.

$ /path/to-runner/codeql-runner-linux init --languages cpp,java

Выполнение дополнительных запросов

{% data reusables.code-scanning.run-additional-queries %}

{% data reusables.code-scanning.codeql-query-suites-explanation %}

Чтобы добавить один или несколько запросов, передайте список путей, разделенных запятыми, флагу --queries ​​команды init. Вы также можете указать дополнительные запросы в файле конфигурации.

Если вы также используете файл конфигурации для пользовательских параметров и указываете дополнительные запросы с флагом --queries , {% data variables.code-scanning.codeql_runner %} использует дополнительные запросы, указанные с флагом --queries , вместо любых в файле конфигурации. Если необходимо запустить комбинированный набор дополнительных запросов, указанных с помощью флага и в файле конфигурации, добавьте перед значением, переданным --queries, символ +. Дополнительные сведения см. в разделе Использование пользовательского файла конфигурации.

В следующем примере символ гарантирует, что {% data variables.code-scanning.codeql_runner %} использует дополнительные запросы вместе с любыми запросами, + указанными в указанном файле конфигурации.

$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml 
    --queries +security-and-quality,octo-org/python-qlpack/show_ifs.ql@main

Использование пользовательского файла конфигурации

Вместо передачи дополнительных сведений в команды {% data variables.code-scanning.codeql_runner %} можно указать пользовательские параметры в отдельном файле конфигурации.

Файл конфигурации представляет собой файл YAML. Он использует синтаксис, аналогичный синтаксису рабочего процесса для {% data variables.product.prodname_actions %}, как показано в примерах ниже. Дополнительные сведения см. в статье Синтаксис рабочего процесса для {% data variables.product.prodname_actions %}.

Используйте флаг --config-file команды init, чтобы указать файл конфигурации. Значение --config-file — это путь к файлу конфигурации, который необходимо использовать. В этом примере загружается файл конфигурации .github/codeql/codeql-config.yml.

$ /path/to-runner/codeql-runner-linux init --config-file .github/codeql/codeql-config.yml

{% data reusables.code-scanning.custom-configuration-file %}

Примеры файлов конфигурации

{% data reusables.code-scanning.example-configuration-files %}

Настройка {% data variables.product.prodname_code_scanning %} для скомпилированных языков

Для скомпилированных языков C/C++, C#, {% ifversion codeql-go-autobuild %} Go, {% endif %} и Java {% data variables.product.prodname_codeql %} выполняет сборку кода перед его анализом. {% data reusables.code-scanning.analyze-go %}

Для многих распространенных систем сборки {% data variables.code-scanning.codeql_runner %} может создавать код автоматически. Чтобы выполнить сборку кода автоматически, запустите autobuild между шагами init и analyze. Обратите внимание, что если для вашего репозитория требуется определенная версия инструмента сборки, вам может потребоваться сначала установить инструмент сборки вручную.

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

$ /path/to-runner/codeql-runner-linux autobuild --language csharp

Если команда autobuild не может собрать ваш код, вы можете самостоятельно выполнить этапы сборки между шагами init и analyze. Дополнительные сведения см. в разделе Выполнение {% data variables.code-scanning.codeql_runner %} в системе CI.

Передача данных {% data variables.product.prodname_code_scanning %} в {% data variables.product.prodname_dotcom %}

По умолчанию {% data variables.code-scanning.codeql_runner %} отправляет результаты из {% data variables.product.prodname_code_scanning %} при выполнении analyze команды. Файлы SARIF также можно передать отдельно, используя команду upload.

После передачи данных {% data variables.product.prodname_dotcom %} отобразит оповещения в вашем репозитории.

Справочник по командам {% data variables.code-scanning.codeql_runner %}

{% data variables.code-scanning.codeql_runner %} поддерживает следующие команды и флаги.

init

Инициализирует {% data variables.code-scanning.codeql_runner %} и создает базу данных {% data variables.product.prodname_codeql %} для каждого языка для анализа.

Флаг Обязательно Входное значение
--repository Имя репозитория для инициализации.
--github-url URL-адрес экземпляра {% data variables.product.prodname_dotcom %}, в котором размещен ваш репозиторий.
--github-auth-stdin Чтение маркера {% data variables.product.prodname_github_apps %} или {% data variables.product.pat_generic %} из стандартных входных данных.
--languages Разделенный запятыми список языков для анализа. По умолчанию {% data variables.code-scanning.codeql_runner %} обнаруживает и анализирует все поддерживаемые языки в репозитории.
--queries Разделенный запятыми список дополнительных запросов, которые необходимо выполнить в дополнение к набору запросов безопасности по умолчанию. Это переопределяет параметр queries в пользовательском файле конфигурации.
--config-file Путь к пользовательскому файлу конфигурации.
--codeql-path Путь к копии исполняемого файла CLI {% data variables.product.prodname_codeql %} для использования. По умолчанию {% data variables.code-scanning.codeql_runner %} скачивает копию.
--temp-dir Каталог, в котором хранятся временные файлы. Значение по умолчанию — ./codeql-runner.
--tools-dir Каталог, в котором инструменты и другие файлы {% data variables.product.prodname_codeql %} хранятся между запусками. По умолчанию это подкаталог домашнего каталога.
--checkout-path Путь к извлечению вашего репозитория. По умолчанию используется текущая рабочая папка.
--debug Нет. Печатает более подробные выходные данные.
--trace-process-name Расширенный, только для Windows. Имя процесса, в который внедряется трассировщик Windows этого процесса.
--trace-process-level Расширенный, только для Windows. Количество уровней вплоть до родительского процесса, куда внедряется трассировщик Windows этого процесса.
-h, --help Нет. Отображает справку по команде.

autobuild

Попытки собрать код для компилируемых языков C/C++, C# и Java. Для этих языков {% data variables.product.prodname_codeql %} выполняет сборку кода перед его анализом. Запустите autobuild между шагами init и analyze.

Флаг Обязательно Входное значение
--language Язык для сборки. По умолчанию {% data variables.code-scanning.codeql_runner %} создает скомпилированный язык с наибольшим числом файлов.
--temp-dir Каталог, в котором хранятся временные файлы. Значение по умолчанию — ./codeql-runner.
--debug Нет. Печатает более подробные выходные данные.
-h, --help Нет. Отображает справку по команде.

analyze

Анализирует код в базах данных {% data variables.product.prodname_codeql %} и передает результаты в {% data variables.product.product_name %}.

Флаг Обязательно Входное значение
--repository Имя репозитория для анализа.
--commit SHA фиксации для анализа. В Git и Azure DevOps это соответствует значению git rev-parse HEAD. В Jenkins это соответствует $GIT_COMMIT.
--ref Имя ссылки для анализа, например refs/heads/main или refs/pull/42/merge. В Git или Jenkins это соответствует значению git symbolic-ref HEAD. В Azure DevOps это соответствует $(Build.SourceBranch).
--github-url URL-адрес экземпляра {% data variables.product.prodname_dotcom %}, в котором размещен ваш репозиторий.
--github-auth-stdin Чтение маркера {% data variables.product.prodname_github_apps %} или {% data variables.product.pat_generic %} из стандартных входных данных.
--checkout-path Путь к извлечению вашего репозитория. По умолчанию используется текущая рабочая папка.
--no-upload Нет. Останавливает отправку результатов {% data variables.code-scanning.codeql_runner %} в {% data variables.product.product_name %}.
--output-dir Каталог, в котором хранятся выходные файлы SARIF. По умолчанию находится в каталоге временных файлов.
--ram Объем памяти, используемый при выполнении запросов. По умолчанию используется вся доступная память.
--no-add-snippets Нет. Исключает фрагменты кода из выходных данных SARIF.
--category Категория для включения в файл результатов SARIF для этого анализа. Категорию можно использовать для различения нескольких анализов для одного и того же инструмента и фиксации, но выполненных на разных языках или в разных частях кода. Это значение появится в свойстве <run>.automationDetails.id в SARIF v2.1.0.
--threads Количество потоков, используемых при выполнении запросов. По умолчанию используются все доступные ядра.
--temp-dir Каталог, в котором хранятся временные файлы. Значение по умолчанию — ./codeql-runner.
--debug Нет. Печатает более подробные выходные данные.
-h, --help Нет. Отображает справку по команде.

upload

Передает файлы SARIF в {% data variables.product.product_name %}.

{% note %}

Примечание. При анализе кода с помощью средства выполнения тестов CodeQL команда analyze передает результаты SARIF по умолчанию. Вы можете использовать команду upload ​​для передачи результатов SARIF, созданных другими инструментами.

{% endnote %}

Флаг Обязательно Входное значение
--sarif-file Файл SARIF для передачи или каталог, содержащий несколько файлов SARIF.
--repository Имя проанализированного репозитория.
--commit SHA проанализированной фиксации. В Git и Azure DevOps это соответствует значению git rev-parse HEAD. В Jenkins это соответствует $GIT_COMMIT.
--ref Имя проанализированной ссылки, например refs/heads/main или refs/pull/42/merge. В Git или Jenkins это соответствует значению git symbolic-ref HEAD. В Azure DevOps это соответствует $(Build.SourceBranch).
--github-url URL-адрес экземпляра {% data variables.product.prodname_dotcom %}, в котором размещен ваш репозиторий.
--github-auth-stdin Чтение маркера {% data variables.product.prodname_github_apps %} или {% data variables.product.pat_generic %} из стандартных входных данных.
--checkout-path Путь к извлечению вашего репозитория. По умолчанию используется текущая рабочая папка.
--debug Нет. Печатает более подробные выходные данные.
-h, --help Нет. Отображает справку по команде.