23 KiB
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 |
|
|
how_to |
|
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 %} отобразит оповещения в вашем репозитории.
- При передаче в запрос на вытягивание, например
--ref refs/pull/42/mergeили--ref refs/pull/42/head, результаты отображаются в виде оповещений при проверке запроса на вытягивание. Дополнительные сведения см. на странице Рассмотрение оповещений проверки кода в запросах на вытягивание. - При передаче в ветвь, например
--ref refs/heads/my-branch, результаты появятся на вкладке Безопасность для вашего репозитория. Дополнительные сведения см. в разделе Управление оповещениями о сканировании кода для репозитория.
Справочник по командам {% 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 |
Нет. Отображает справку по команде. |