Skip to main content

CodeQL CLI

Вы можете использовать CodeQL CLI его для локального запуска CodeQL процессов в программных проектах или для генерации code scanning результатов для загрузки в GitHub.

Кто может использовать эту функцию?

CodeQL доступен для следующих типов репозитория:

Разработчики программного обеспечения и исследователи безопасности могут защитить свой код с помощью CodeQL анализа. Дополнительные сведения см. в CodeQLразделе Сканирование кода с помощью CodeQL.

Это CodeQL CLI автономный инструмент командной строки, который можно использовать для анализа кода. Её основная цель — генерировать представление базы данных кода, базы CodeQL данных. Когда база данных готова, вы можете делать к ней интерактивный запрос или запускать набор запросов для генерации результатов в формате SARIF и загрузки их в GitHub.

Вы можете использовать CodeQL CLI это, чтобы:

  • Запускайте анализы CodeQL с помощью запросов, предоставленных инженерами GitHub и сообществом открытый код
  • Генерируйте оповещения о сканировании кода, которые можно загрузить для отображения в GitHub
  • Создайте CodeQL базы данных для использования в CodeQL расширении.Visual Studio Code
  • Разрабатывайте и тестируйте пользовательские CodeQL запросы для использования в собственном анализе

Они CodeQL CLI могут проанализировать:

  • Динамические языки, например, JavaScript и Python.
  • Например, компилированные языки, C/C++, C#, Go, Java, Kotlin, Rust, и Swift
  • Базы кода написаны на нескольких языках.

О том, как использовать CodeQL CLI для code scanning

Вы можете использовать CodeQL CLI их для запуска code scanning кода, который вы обрабатываете в сторонней системе непрерывной интеграции (CI). Code scanning — это функция, используемая для анализа кода в репозитории GitHub для поиска уязвимостей системы безопасности и ошибок кодирования. Все проблемы, выявленные анализом, отображаются в репозитории. Для обзора использования сканирования кода с внешними CI-системами см. Использование сканирования кода с существующей системой CI. Рекомендуемые характеристики (оперативная память, ядра процессора и диск) для анализа CodeQL см. Рекомендуемое оборудование для запуска CodeQL.

В качестве альтернативы можно использовать GitHub Actions или Azure DevOps конвейеры для сканирования кода с помощью CodeQL CLI. Для получения дополнительной информации см. Настройка настройки по умолчанию для сканирования кода или Configure GitHub Advanced Security for Azure DevOps в Microsoft Learn.

Для обзора всех вариантов использования CodeQL анализа для сканирования кода см. Сканирование кода с помощью CodeQL.

Примечание.

  • CodeQL CLI можно использовать в общедоступных репозиториях, которые хранятся на GitHub.com, и доступны для использования в частных репозиториях, принадлежащих клиентам с лицензией GitHub Code Security . Дополнительные сведения см. в разделе GitHub CodeQL условия и CodeQL CLI.
  • В настоящее время CodeQL CLI несовместим с дистрибутивами Linux не на основе glibc, такими как Alpine Linux (на основе musl).

О генерации результатов сканирования кода с помощью CodeQL CLI

Если вы решите запускать CodeQL CLI его напрямую, сначала нужно установить CodeQL CLI локально. Если вы планируете использовать CodeQL CLI их с внешней CI-системой, вам нужно сделать CodeQL CLI её доступной для серверов в вашей CI-системе.

После CodeQL CLI настройки вы можете использовать три разные команды для генерации результатов и загрузки их в GitHub:

  1. database create создать CodeQL базу данных, представляющую иерархическую структуру каждого поддерживаемого языка программирования в репозитории. Дополнительные сведения см. в разделе Подготовка кода для анализа CodeQL.
  2. database analyze для выполнения запросов для анализа каждой CodeQL базы данных и суммирования результатов в файле SARIF. Дополнительные сведения см. в разделе Анализ кода с помощью запросов CodeQL.
  3. github upload-results загрузить полученные SARIF-файлы туда GitHub , где результаты сопоставляются с веткой или pull-запросом и отображаются в виде code scanning оповещений. Дополнительные сведения см. в разделе Загрузка результатов анализа CodeQL на GitHub.

Примечание.

Отправка данных SARIF для отображения в виде code scanning приводит к поддержке GitHub для репозиториев, принадлежащих организации, с GitHub Code Security включено, а также общедоступные репозитории на GitHub.com. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория.

Пример конфигурации CI для CodeQL анализа

Это пример полной серии команд для , CodeQL CLI которые можно использовать для анализа кодовой базы с двумя поддерживаемыми языками, а затем загрузки результатов в GitHub.

# Create CodeQL databases for Java and Python in the 'codeql-dbs' directory
# Call the normal build script for the codebase: 'myBuildScript'

codeql database create codeql-dbs --source-root=src \
    --db-cluster --language=java,python --command=./myBuildScript

# Analyze the CodeQL database for Java, 'codeql-dbs/java'
# Tag the data as 'java' results and store in: 'java-results.sarif'

codeql database analyze codeql-dbs/java java-code-scanning.qls \
    --format=sarif-latest --sarif-category=java --output=java-results.sarif

# Analyze the CodeQL database for Python, 'codeql-dbs/python'
# Tag the data as 'python' results and store in: 'python-results.sarif'

codeql database analyze codeql-dbs/python python-code-scanning.qls \
    --format=sarif-latest --sarif-category=python --output=python-results.sarif

# Upload the SARIF file with the Java results: 'java-results.sarif'
# The GitHub App or personal access token created for authentication
# with GitHub's REST API is available in the `GITHUB_TOKEN` environment variable.

codeql github upload-results \
    --repository=my-org/example-repo \
    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
    --sarif=java-results.sarif

# Upload the SARIF file with the Python results: 'python-results.sarif'

codeql github upload-results \
    --repository=my-org/example-repo \
    --ref=refs/heads/main --commit=deb275d2d5fe9a522a0b7bd8b6b6a1c939552718 \
    --sarif=python-results.sarif

Извлечение базы данных

Используется CodeQL CLI специальные программы, называемые экстракторами, для извлечения информации из исходного кода программной системы в базу данных, к которой можно задавать запросы. Вы можете настроить поведение экстракторов, настроив настройки экстрактора через CodeQL CLI. См . раздел AUTOTITLE.

О лицензии GitHub CodeQL

Уведомление о лицензии. Если у вас нет лицензии на GitHub Code Security, то, установив этот продукт, вы соглашаетесь с GitHub CodeQL условий.

Сведения о том, как можно попробовать GitHub Advanced Security бесплатно, см. в разделе Настройка пробной версии GitHub Advanced Security.

О CodeQL CLI базах данных

CodeQL CLI Команда database bundle может быть использована для создания пере��осимого архива CodeQL базы данных.

Копия пакета баз данных может использоваться для обмена информацией по устранению неполадок с членами вашей команды или с Служба поддержки GitHub. См . раздел AUTOTITLE.

Начало работы

Самый простой способ начать смотрите Настройка интерфейса командной строки CodeQL.

Более продвинутые варианты настройки доступны, если они нужны. Например, если вы:

  • Хочу внести вклад в открытый код общие запросы CodeQL и предпочитаю работать напрямую с исходным кодом CodeQL. См . раздел AUTOTITLE.
  • Нужно установить несколько версий CodeQL CLI параллельно. Например, если одна кодовая база требует определённой версии, а другая использует последнюю. Вы можете скачать каждую версию и распаковывать оба архива CLI в одной родительской директории.
  • Вы исследуете или разрабатываете запросы и хотите скачать базы данных с GitHub.com. См . раздел AUTOTITLE.